- Aggiornare il sistema
sudo apt-get update && sudo apt-get upgrade -y
- Installare nginx
sudo apt-get install nginx -y
- Avviare nginx
sudo systemctl start nginx
- Avviare nginx all'avvio del sistema
sudo systemctl enable nginxy
Per verificare se nginx è attivo, digitare
sudo systemctl status nginx
Per verificare che l'installazione sia andata a buon fine, digitare nella barra degli indirizzi del browser, l'indirizzo IP del server. Comparirà un messaggio di benvenuto.
[Guida di riferimento] (https://medium.com/@utkarsh_verma/configure-nginx-as-a-web-server-and-reverse-proxy-for-nodejs-application-on-aws-ubuntu-16-04-server-872922e21d38) su medium.
- Rimuovere e aggiungere un file di configurazione di default
$ sudo rm /etc/nginx/sites-available/default
$ sudo vi /etc/nginx/sites-available/default
- Aggiungere il seguente contenuto:
server {
listen 80;
server_name your_domain.com;
location / {
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;
}
}
In questo modo abbiamo configurato un proxy in modo che le richieste dirette alla porta 80 siano automaticamente reindirizzate alla porta 3000 (ossia quella in cui sarà attiva la nostra app express).
-
Testare la configurazione di nginx:
sudo nginx -t
-
Riavviare nginx
sudo /etc/init.d/nginx reload
Sostanzialmente, seguire l'intera guida del paragrafo precedente, con i seguenti accorgimenti:
-
Aggiungere altre
location
all'interno del medesimoserver
-
Utilizzare la direttiva
rewrite
location /utils {
rewrite ^/utils/(.*) /$1 break;
Per dubbi seguire la guida di soheilhy.
Il concetto è che occorre riscrivere gli indirizzi.
Nginx invia le richieste a /utils
mentre le app Express le gestiscono a partire da /
.
N.B. rispetto alla guida ho aggiunto un
/
alla fine di utils perché a tutte le richieste veniva aggiunto un/
aggiuntivo.
Prerequisito
Modificare il file /etc/hosts
, digitando sudo nano /etc/hosts
Aggiungere le seguenti linee:
127.0.0.1 domain.com www.domain.com
127.0.0.1 domain2.com www.domain2.com
- Inserire due
server
nel file di configurazione dinginx
, ciascuno in ascolto sulla medesima porta. - Entrambi i
server
avranno al loro interno una unicalocation
; - la sola differenza sarà nel
proxy_pass
, dato che il primoserver
indirizza a un indirizzo IP, il secondo ad un altro indirizzo IP.
server {
listen 80;
server_name domain.com;
location / {
proxy_pass http://127.0.0.1:4000;
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;
}
}
server {
listen 80;
server_name domain2.com;
location / {
proxy_pass http://127.0.0.1:5000;
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;
}
}
Al termine, riavviare nginx