Cos'è un proxy inverso?
Un server proxy standard funziona per conto dei client, spesso fornendo privacy o filtrando i contenuti. Un proxy inverso funziona per conto di un server, intercettando il traffico e instradandolo a un server separato.
Esistono diversi motivi per cui potresti voler installare un proxy inverso. Uno dei motivi principali è la privacy.
Se si dispone di più server, un proxy inverso può aiutare a bilanciare i carichi tra i server e migliorare le prestazioni. Poiché un proxy inverso fornisce un unico punto di contatto per i clienti, può centralizzare la registrazione e i rapporti su più server.
Nginx può migliorare le prestazioni servendo rapidamente contenuto statico e trasmettendo richieste di contenuto dinamico ai server Apache.
Questa guida ti aiuterà a installare e configurare un proxy inverso Nginx sul tuo sistema.
Prerequisiti
- Un server Linux con Apache, PHP e un firewall
- Accesso a un utente root con sudo accedere
- Riga di comando o terminale Linux (Ctrl –Alt –T per Ubuntu, Alt –F2 per CentOS)
- Gestione pacchetti (come APT)
Configurazione di un proxy inverso Nginx
Passaggio 1:installa Nginx dai repository predefiniti
Apri una finestra di terminale e inserisci quanto segue:
sudo apt-get update
Consenti al gestore pacchetti di completare l'aggiornamento degli elenchi di software, quindi inserisci quanto segue:
sudo apt-get install nginx
Consenti il completamento del processo.
Fase 2 (opzionale):installa Nginx dal repository ufficiale
Aggiungi token di sicurezza
In una finestra di terminale, inserisci quanto segue:
sudo wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
Questo scarica la chiave di firma per Nginx, che verifica che stai scaricando un software autentico.
Apri sources.list File per la modifica
Nel terminale, inserisci quanto segue:
sudo vi /etc/apt/sources.list
Aggiungi sorgenti Nginx all'elenco dei repository
Inserisci le seguenti righe in /etc/apt/sources.list
file che hai appena aperto:
deb https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
deb-src https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
Sostituisci <CODENAME>
con il nome in codice per la tua distribuzione di Debian.
Salva il file ed esci .
Installa l'ultima versione di Nginx
Per installare l'ultima versione di Nginx, usa i comandi:
sudo apt-get remove nginx-common
sudo apt-get update
sudo apt-get install nginx
Passaggio 3:avvia Nginx e configura per l'avvio al riavvio
Per avviare Nginx:
sudo systemctl start nginx
Per abilitare Nginx:
sudo systemctl enable nginx
Per verificare che Nginx sia in esecuzione:
sudo systemctl status nginx
L'output dovrebbe mostrare che il servizio è attivo (in esecuzione) , come nell'immagine qui sotto:
Fase 4:scollega il file di configurazione predefinito
Nel terminale, inserisci quanto segue:
sudo unlink /etc/nginx/sites-enabled/default
Fase 5:crea un nuovo file di configurazione
Per creare un nuovo file di configurazione, inserisci:
cd /etc/nginx/sites-available/
sudo vi custom_server.conf
Sostituisci custom_server
con un nome che è significativo per te. Nel nuovo file, inserisci:
server {
listen 80;
location / {
proxy_pass http://my_server;
}
}
Questo è un esempio di proxy inverso Nginx molto semplice. Nginx è impostato per ascoltare tutto il traffico sulla porta 80 per tutto il traffico.
Il proxy_pass
il comando indirizza tutto il traffico sulla porta 80 a http://my_server
. Basta cambiare http://my_server
nella posizione di tua scelta e Nginx intercetterà le richieste dei clienti e le indirizzerà alla posizione da te specificata. Al termine, salva il file ed esci.
Fase 6:collegamento e attivazione del file di configurazione
Per attivare il nuovo file Nginx, inserisci:
ln -s /etc/nginx/sites-available/custom_server.conf
/etc/nginx/sites-enabled/custom_server.conf
Come al solito, sostituisci custom_server
con il nome del file di configurazione creato al punto 5.
Passaggio 7:verifica e riavvia Nginx
Per testare Nginx:
sudo service nginx configtest
Per riavviare Nginx:
sudo service nginx restart
Opzioni di configurazione Nginx opzionali
Buffer proxy
Per impostazione predefinita, Nginx esegue il buffering del traffico per i server per i quali esegue il proxy. I buffer migliorano le prestazioni del server poiché una risposta del server non viene inviata fino a quando il client non completa l'invio di una risposta completa.
Per disattivare il buffer, apri il file di configurazione dal passaggio 5. Nella posizione/sezione , aggiungi quanto segue:
proxy_buffering off;
Richiedi intestazioni
Le intestazioni forniscono al server informazioni sulle richieste effettuate o sul client.
Nginx ridefinisce due dei campi di intestazione:host
è configurato per $proxy_host
e connection
è configurato per close
. Se utilizzi queste intestazioni, assicurati di modificare il comportamento nel file di configurazione.
Se le stringhe di intestazione sono vuote, Nginx elimina semplicemente quei campi.
Per cambiare il modo in cui Nginx gestisce le eriche, usa i seguenti comandi nel tuo file di configurazione:
location / {
proxy_set_header Host $host;
}
Questo esempio dice a Nginx di impostare host
al $host
variabile.
Per impedire che un campo di intestazione venga passato al server proxy, utilizzare una stringa vuota come segue:
location / {
proxy_set_header header-variable "";
}
Bilanciamento del carico
È possibile utilizzare il file di configurazione per instradare il traffico a più server. Per utilizzare questa configurazione, il tuo file di configurazione sarà simile a questo esempio:
http {
server {
proxy_pass http://my_server
}
}
In altre parole, la configurazione HTTP esce dalla configurazione del server dal passaggio 5.
Per creare un nome per un gruppo di server, utilizza il upstream
comando:
http {
upstream server_group {
server my.server1.com weight=3;
server my.server2.com;
}
server {
location / {
proxy_pass http://server_group;
}
}
}
Questa designazione richiede due server:my.server1.com
e my.server2.com
– e li raggruppa insieme. Nginx invia un proxy a quel gruppo di server con il nome http://server_group
. Puoi rinominarli come preferisci.
Questo esempio utilizza il weight
comando per instradare tre richieste a my.server1.com
, quindi 1 richiesta a my.server2.com
. Questa è un'opzione per bilanciare manualmente il carico del client tra i server. Un altro metodo è semplicemente omettere qualsiasi designazione, in cui Nginx eseguirà il round robin delle richieste in modo uniforme tra i server elencati.