Questo tutorial dettagliato ti mostrerà come configurare facilmente un proxy inverso con Nginx per migliorare la sicurezza e le prestazioni.
Uno degli strumenti di proxy inverso più popolari al momento è Nginx. Sebbene Nginx stesso sia un server Web, svolge un lavoro eccezionale fungendo da proxy inverso.
Cos'è un proxy inverso?
Un proxy inverso è un server che si trova tra applicazioni interne e client esterni, inoltrando le richieste dei client al server appropriato.
Il servizio proxy inverso funge da front-end, gestisce tutte le richieste dei client in arrivo e le distribuisce al Web back-end, al database o ad altri server.
L'utilizzo di Nginx come proxy inverso offre numerosi vantaggi aggiuntivi:
- Bilanciamento del carico – Nginx può eseguire il bilanciamento del carico per distribuire le richieste dei clienti su server proxy, migliorando le prestazioni, la scalabilità e l'affidabilità.
- Sicurezza migliorata – Con un proxy inverso, i client non avranno informazioni sui nostri server back-end, quindi nessun client dannoso non può accedervi direttamente per sfruttare eventuali vulnerabilità. Dal punto di vista del cliente, questo fa sembrare che tutto provenga da un unico posto.
- Prestazioni migliori – Con Nginx come proxy inverso, puoi memorizzare nella cache le versioni prerenderizzate delle pagine per accelerare i tempi di caricamento delle pagine. Funziona memorizzando nella cache il contenuto ricevuto dalle risposte dei server proxy e utilizzandolo per rispondere ai client senza contattare il server proxy ogni volta per lo stesso contenuto.
- Risoluzione SSL – Nginx può fungere da endpoint SSL per le connessioni con i client. Gestirà e decrittograferà le connessioni SSL in entrata e crittograferà le risposte del server proxy.
Come Impostare un proxy inverso con Nginx
1. Installazione di Nginx
Nginx è la suite di server Web più popolare distribuita su Internet. Può funzionare come un server proxy inverso indirizzando il traffico web a server specifici.
Lascia che ti mostri come installare Nginx su varie distribuzioni Linux.
Per installare Nginx su Debian, Ubuntu, Linux Mint, Kali e altri derivati Debian o Ubuntu, esegui i seguenti comandi:
sudo apt update
sudo apt install nginx
Su Fedora, CentOS, Red Hat e altri derivati Fedora o Red Hat, esegui i seguenti comandi:
sudo dnf upgrade
sudo dnf install nginx
Per installare Nginx su Arch Linux, Manjaro e altri derivati di Arch, esegui i seguenti comandi:
sudo pacman -Syu
sudo pacman -S nginx
Al termine dell'installazione, è possibile verificare che Nginx sia installato correttamente controllando la versione del software. Immettere quanto segue:
nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
2. Configurazione di Nginx
Abbiamo installato il sito principale su example.com
nome di dominio sullo stesso server che esegue il nostro Nginx. Tuttavia, il nostro sito blog WordPress è installato su blog.example.com
sottodominio su un server diverso con indirizzo IP 127.0.1.10
.
Dobbiamo configurare un proxy inverso con Nginx per inoltrare richieste per blog.example.com
sottodominio in modo che tutte le richieste vengano inoltrate a 127.0.1.10
. Per farlo, segui i passaggi mostrati di seguito.
1. Disabilita l'host virtuale Nginx preconfigurato predefinito:
unlink /etc/nginx/sites-enabled/default
2. Inserisci la directory /etc/nginx/sites-available
e crea un file di configurazione del proxy inverso.
cd /etc/nginx/sites-available
sudo vim example.conf
Incolla la seguente configurazione di Nginx.
server {
listen 80;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
server {
listen 80;
server_name blog.example.com;
location / {
proxy_pass http://127.0.1.10:80;
}
}
Come puoi vedere, puoi continuare a eseguire example.com
sulla stessa istanza di Nginx, ma Nginx reindirizzerà tutte le connessioni in entrata per blog.example.com
sulla porta 80
al 127.0.1.10
server, in ascolto sulla porta 80
.
3. Salva il file e poi attivalo creando un collegamento simbolico:
sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/
4. Testare Nginx per eventuali errori di configurazione:
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
5. Se non ci sono errori, riavvia Nginx per rendere effettive le modifiche:
sudo systemctl restart nginx
Avvia un browser web e vai all'URL del tuo blog WordPress. Verrai indirizzato tramite Nginx a 127.0.1.10
, ospitando il tuo blog WordPress.
Congratulazioni, hai impostato correttamente Nginx per funzionare come proxy inverso. Ora puoi indirizzare il traffico che dovrebbe andare al server di destinazione al server proxy inverso, che finirà nella destinazione corretta.
Puoi saperne di più su tutte le direttive proxy inverse nell'indice dettagliato delle direttive di Nginx.
Conclusione
Ora sai come configurare un proxy inverso con Nginx. Come puoi vedere, la configurazione del proxy inverso di Nginx è un processo semplice. Ma, naturalmente, ci sono molti modi per installarlo e configurarlo, che dipendono interamente dalle tue esigenze.