Per impostazione predefinita Node.js non può operare sulla canonica porta 80 HTTP. Dobbiamo quindi utilizzare un proxy HTTP.

Se ad esempio abbiamo creato il dominio locale http://app.test, un proxy HTTP che gestisce questo dominio reindirizzerà tutte
le richieste HTTP all’indirizzo interno su cui opera Node.js (ad esempio http://127.0.0.1:3000).

Con nginx possiamo creare un proxy HTTP come segue usando il seguente file di configurazione per il nostro dominio locale:


upstream app {
  server 127.0.0.1:3000;
}

server {
    listen 80;

    server_name app.test;

    root /home/app/www;
    index index.html;

    client_max_body_size 8m;

    location / {
      try_files $uri @app;
    }

    location @app {
      proxy_pass http://app;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";                                                                                                                                                          
    }
}

La regola upstream definisce il blocco relativo a Node.js che verrà poi salvato nella variabile app. In pratica ora tutte le
richieste HTTP che arrivano al nostro dominio di test verranno reindirizzate internamente all’applicazione in Node.js.