Usare NGINX come reverse proxy è un’opzione molto diffusa e valida. Per con­fi­gu­ra­re la soluzione basta in­stal­la­re NGINX, creare un file di con­fi­gu­ra­zio­ne e definire le im­po­sta­zio­ni del server. Op­zio­nal­men­te è possibile testare l’esito del processo con Gunicorn.

Con­fi­gu­ra­re NGINX come reverse proxy in Ubuntu 22.04: istru­zio­ni

Per un server web sicuro, fles­si­bi­le ed ef­fi­cien­te può essere utile usare un reverse proxy. Puoi attivarlo tra client e server web senza che i vi­si­ta­to­ri e le vi­si­ta­tri­ci lo notino. Una soluzione molto valida per tutte le richieste in entrata è il reverse proxy NGINX. Nelle sezioni che seguono ti spie­ghia­mo come in­stal­lar­lo e con­fi­gu­rar­lo su Ubuntu 22.04.

Consiglio

Sempre nella Digital Guide trovi anche la guida all’in­stal­la­zio­ne di NGINX su Ubuntu 20.04. Ti spie­ghia­mo inoltre nel dettaglio cos’è un server proxy e nell’articolo dedicato scopri anche di cosa si tratta quando si parla di NGINX.

Requisiti per la con­fi­gu­ra­zio­ne

Per con­fi­gu­ra­re un reverse proxy NGINX su Ubuntu 22.04 hai bisogno di:

  • Un server Ubuntu com­ple­ta­men­te con­fi­gu­ra­to
  • L’indirizzo IP o il socket di dominio Unix del server
  • Il dominio del tuo server
  • Privilegi sudo per il server

In­stal­la­re NGINX come reverse proxy

Prima di tutto aggiorna il tuo re­po­si­to­ry dal terminale per ottenere l’accesso agli ultimi pacchetti. Installa quindi NGINX con il comando apt install. Il codice che ti serve è il seguente:

$ sudo apt update
$ sudo apt install nginx
bash

Conferma con [Y] e premi [Invio] per applicare le im­po­sta­zio­ni.

Configura quindi il tuo firewall in modo che NGINX abbia accesso al tuo server. A questo scopo aggiungi un’eccezione con il comando seguente:

$ sudo ufw allow 'Nginx HTTP'
bash

Controlla quindi che l’in­stal­la­zio­ne di NGINX sia stata eseguita cor­ret­ta­men­te. In questo caso il comando da usare è:

$ systemctl status nginx
bash

Se NGINX è stato in­stal­la­to cor­ret­ta­men­te, l’output si presenta come segue:

nginx.service - A high performance web server and a reverse proxy server
      Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
      Active: active (running) since Mon 2024-06-24 06:52:46 UTC; 39min ago
         Docs: man:nginx(8)
    Main PID: 9919 (nginx)
        Tasks: 2 (limit: 2327)
      Memory: 2.9M
          CPU: 50ms
      CGroup: /system.slice/nginx.service
                 ├─9919 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
                 └─9920 "nginx: worker process"
bash

Creare il file di con­fi­gu­ra­zio­ne e adattare il server

Configura quindi il tuo blocco server per preparare il reverse proxy NGINX per il tuo sistema in modo ottimale. A questo scopo crea e apri un nuovo file di con­fi­gu­ra­zio­ne con l’editor di testo nano. Inserisci il comando seguente, so­sti­tuen­do il se­gna­po­sto “il_tuo_dominio” con il nome del tuo dominio:

$ sudo nano /etc/nginx/sites-available/il_tuo_dominio
bash

Dopo aver aperto il file, inserisci al suo interno il contenuto seguente, so­sti­tuen­do i se­gna­po­sti “il_tuo_dominio” e “indirizzo_server” con il dominio e l’IP o il socket di dominio Unix del tuo server:

server {
    liste 80;
    liste [::]:80;
    nome_server il_tuo_dominio www.il_tuo_dominio;
        
    location / {
        proxy_pass http://indirizzo_server;
        include /etc/nginx/proxy_params;
    }
}
txt

Salva e chiudi il file. Il contenuto mostrato è la con­fi­gu­ra­zio­ne standard di NGINX. Viene usata la porta 80 per ri­spon­de­re alle richieste del tuo dominio e del tuo server. proxy_pass è il com­po­nen­te es­sen­zia­le per il fun­zio­na­men­to di NGINX come reverse proxy. Se ne­ces­sa­rio puoi anche con­fi­gu­ra­re altri server.

Crea quindi un link alla directory sites-enabled a cui NGINX accede ini­zial­men­te. A questo scopo usa il comando seguente, so­sti­tuen­do di nuovo il se­gna­po­sto “il_tuo_dominio”:

$ sudo ln -s /etc/nginx/sites-available/il_tuo_dominio/etc/nginx/sites-enabled/
bash

A questo punto verifica che la con­fi­gu­ra­zio­ne non presenti errori:

$ sudo nginx -t
bash

Se non vengono vi­sua­liz­za­ti messaggi di errore, ora puoi riavviare il reverse proxy NGINX per applicare tutte le im­po­sta­zio­ni. Inserisci il comando seguente:

$ sudo systemctl restart nginx
bash

Ora la con­fi­gu­ra­zio­ne di NGINX come reverse proxy è conclusa. Nella sezione che segue ti spie­ghia­mo come ve­ri­fi­ca­re il proxy. Tuttavia, questa prova non è ob­bli­ga­to­ria per la con­fi­gu­ra­zio­ne.

Ve­ri­fi­ca­re il reverse proxy NGINX con Gunicorn (opzionale)

Se desideri testare il tuo reverse proxy NGINX, in linea di principio puoi farlo usando il tuo server. Basta ri­chia­mar­lo dalla shell. In al­ter­na­ti­va puoi usare il server web HTTP Gunicorn, che può essere combinato molto bene con il reverse proxy NGINX. Per prima cosa aggiorna i pacchetti e installa il server:

$ sudo apt update
$ sudo apt install gunicorn
bash

Crea quindi una funzione semplice che venga inviata al tuo browser come risposta HTTP. Per eseguire questa ope­ra­zio­ne ricorri di nuovo a nano:

$ nano test.py
bash

Apri il file e inserisci il codice seguente:

def app(environ, start_response):
	start_response("200 OK", [])
	return iter([b"Questo è un test"])
txt

Quindi salva e chiudi il file. Dopodiché avvia Gunicorn e richiama il modulo di test:

$ gunicorn --worker=2 test:app
bash

L’output dovrebbe pre­sen­tar­si all’incirca come segue:

[2024-06-24 07:09:29 +0000] [10568] [INFO] Starting gunicorn 20.1.0
[2024-06-24 09:14:37 +0000] [10568] [INFO] Listening at: http://127.0.0.1 (10568)
[2024-06-24 09:14:37 +0000] [10568] [INFO] Using worker: sync
[2024-06-24 09:14:37 +0000] [10569] [INFO] Booting worker with pid: 10569
[2024-06-24 09:14:37 +0000] [10570] [INFO] Booting worker with pid: 10570
bash

In questo modo hai ottenuto la conferma che Gunicorn in­te­ra­gi­sce con l’indirizzo standard http://127.0.0.1:8000. Come ultimo passaggio apri il browser e richiama il dominio che hai con­fi­gu­ra­to con NGINX. Ora il reverse proxy NGINX vi­sua­liz­za il messaggio “Questo è un test”.

Vai al menu prin­ci­pa­le