-1

Am trying to use nginx as reverse proxy for my simple node app , however am keeping getting 404 error on proxy side while locally on http://127.0.0.1:3000 everything is OK.

here is my basic node app

const express = require('express');
const path = require('path');
const app = express();
const port = 3000;

// Serve static files from the 'assets' directory
app.use('/assets', express.static(path.join(__dirname, 'assets')));

// Log all incoming requests
app.use((req, res, next) => {
  console.log(`Request received: ${req.method} ${req.url}`);
  next();
});

// Serve a simple HTML page that displays the image
app.get('/', (req, res) => {
  res.send(`
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Image Display Test</title>
    </head>
    <body>
      <h1>Image Display Test</h1>
      <img src="/assets/coffee.png" alt="Test Image">
    </body>
    </html>
  `);
});

// Start the server
app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

// log
app.use((req, res, next) => {
  console.log('Request received:', req.method, req.url);
  next();
});

app.use('/assets', (req, res, next) => {
  console.log('Static asset requested:', req.url);
  express.static(path.join(__dirname, 'assets'))(req, res, next);
});

and here is my nginx config

server {
    listen %ip%:%proxy_port%;
    server_name %domain_idn% %alias_idn%;
    error_log /var/log/%web_system%/domains/%domain%.error.log error;

    root /home/admin/web/test.example.com/public_html;

    location /app_v567657/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

my node js app.js file is public_html/app_v567657/ so that no body can directly download app.js source code.

so whenever i visit my url from browser i get 404 for the app assets like https://test.example.com/assets/coffee.png which is displayed OK when i visit http://127.0.0.1:3000

so not sure what am doing wrong. any idea. thanks

0

Browse other questions tagged or ask your own question.