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.