Oltre ad Apache, Nginx è il server web più popolare disponibile. Oltre ad essere un server web, può essere utilizzato anche come bilanciatore del carico o proxy inverso. In questo tutorial, Quantrimang.com ti mostrerà come utilizzare Nginx come proxy inverso.
Cos'è un proxy inverso?
Un server proxy funge da intermediario tra un client e un altro server. Il server proxy recupera le risorse dal server a cui desideri connetterti e te le invia per visualizzarle. Un proxy inverso funziona allo stesso modo, tranne che i ruoli sono invertiti. Quando richiedi informazioni dal server, il proxy inverso conserva la richiesta e la invia al server backend appropriato. Ciò consente agli amministratori di sistema di utilizzare il server per più applicazioni, oltre a garantire un flusso di traffico più fluido tra client e server.
Vantaggi dei proxy inversi
A seconda dell'applicazione, potresti avere diversi casi di utilizzo del proxy inverso.
- Un proxy inverso ti consente di eseguire più applicazioni sullo stesso server : se hai più applicazioni in esecuzione sullo stesso server, non possono "ascoltare" tutte contemporaneamente sulla porta 80 o 433. Con un proxy inverso, puoi configurarlo per reindirizzare il traffico alle singole applicazioni, se necessario.
- Bilanciamento del carico : se disponi di più server che eseguono la stessa applicazione, puoi utilizzare un proxy inverso per distribuire il traffico in modo uniforme su ciascun server.
- Firewall per applicazioni Web : puoi utilizzare il proxy inverso per nascondere la tua applicazione e anche per filtrare gli IP spam o proteggerti dagli attacchi DDOS .
- Registrazione e controllo semplici : poiché tutto il traffico in entrata è gestito da un proxy inverso, è più semplice registrare e monitorare i flussi di traffico.
Configura Nginx come proxy inverso
Per configurare Nginx come proxy inverso, l'articolo utilizzerà il parametro proxy_pass nel file di configurazione di Nginx.
Nota : questo tutorial presuppone che tu abbia una certa conoscenza di Nginx e che tu abbia installato e configurato Nginx sul tuo server.
Nella maggior parte dei casi d’uso, Nginx sarà il server front-end, “in ascolto” sulla porta 80 (HTTP) o 443 (HTTPS) per le richieste in entrata. Poiché può esserci un solo servizio “in ascolto” sulla porta 80 o 443, la tua applicazione dovrà “ascoltare” su un’altra porta, come la porta 8081. La configurazione più semplice sarà simile a questa:
server {
listen 80;
listen [::]:80;
server_name myapp.com;
location / {
proxy_pass http://localhost:8081/;
}
}
Ciò significa che tutte le richieste a myapp.com sulla porta 80 verranno reindirizzate alla porta 8081.
Impostazioni avanzate
Oltre alla direttiva proxy_pass , ci sono molte altre direttive che puoi utilizzare per una configurazione più avanzata.
- proxy_set_header : consente di impostare un'intestazione da inviare all'applicazione in background. Ad esempio, vedere la seguente configurazione:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
È possibile impostare le intestazioni proxy necessarie da passare all'applicazione, comunicarle l'IP della richiesta e l'indirizzo remoto, quindi inviare il contenuto corretto al sito Web richiedente.
- timeout proxy : consente di impostare il valore di timeout per l'invio e la ricezione di richieste proxy. Per esempio:
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
- proxy_buffers - Ciò consente a Nginx di trattenere temporaneamente la risposta del server proxy e di inviarla al server richiedente solo dopo che il server proxy ha finito di rispondere. Per esempio:
proxy_buffers 32 4k;
Se la tua applicazione invia un numero elevato di file, potresti voler disabilitare proxy_buffers:
proxy_buffering off;
Come puoi vedere, Nginx è un server proxy inverso che ha molti usi. Il vantaggio più grande è che è semplice da configurare, facile da usare e consente comunque di adattarsi a scenari più complessi. Per maggiori dettagli, puoi consultare la documentazione del modulo proxy Nginx (su https://nginx.org/en/docs/http/ngx_http_proxy_module.html) o esempi di configurazione (su https://www .nginx.com/resources/wiki /start/topics/examples/full/).
Spero che tu abbia successo.