Come utilizzare Nginx come server proxy HTTP / HTTPS? [chiuso]


Risposte:


14

Dopo alcuni test, ho trovato funzionante per me la seguente configurazione.

server {
  server_name ~^(www\.)?(?<domain>.+)$;
  access_log /var/log/nginx/proxy.access.log main;
  error_log /var/log/nginx/proxy.error.log crit;
  listen 10.255.1.13:8080;
  resolver 8.8.8.8;
  location / {
    proxy_pass http://$domain;
    proxy_redirect off;
    proxy_set_header Host $host;
    # Optional headers 
    # proxy_set_header X-Real-IP $remote_addr;
    # proxy_set_header X-Forwarded-For
    # $proxy_add_x_forwarded_for;
  }
}

Questa configurazione funziona solo per HTTP, non per HTTPS.


4
Buon lavoro! Pochi suggerimenti. 1: listen ... default_server. 2: server_name ""o server_name _. 2: proxy_pass $scheme://$http_host. Le limitazioni: poxying a upstream solo con la porta 80; non elabora i reindirizzamenti.
Alexander Azarov,

$ schema è utile solo se il vhost ascolta anche su https - ma poi hai un uomo in mezzo rischi ed errori di certificato https da affrontare ... entrambi sono grandi problemi di sicurezza da considerare
anthonysomerset

8

penso che la risposta breve sia no, non è stata scritta per il proxy in avanti

AGGIORNARE

per chiarire la mia dichiarazione sopra:

NGINX non è mai stato scritto pensando al proxy in avanti - mentre è in remoto possibile in qualche modo jerry rig la configurazione per fare quello che vuoi che tu faccia, dovrai capire le seguenti limitazioni:

  • Supporto cache quasi inesistente (uno dei motivi principali per l'utilizzo di un proxy)
  • Non posso usarlo per qualcosa di diverso dal traffico della porta 80 (cioè non accedere a cpanel box attraverso di esso)
  • Nessun supporto per il traffico basato su SSL
  • Nessun supporto per le intestazioni proxy standard e le intestazioni cache HTTP (la mia comprensione è che queste sono appena state superate
  • Nessun supporto per altri protocolli che supportano server proxy - ad es. VPN ecc

Altre possibili considerazioni attualmente sconosciute:

  • Possibile fare il tuo proxy come nessuna reale capacità di controllo / autenticazione dell'accesso a grana fine (nginx ha il supporto per diversi metodi di controllo dell'accesso ma non è chiaro come ciò possa comportarsi nel contesto del proxy forward)
  • Possibili rischi per la sicurezza della macchina su cui è installato nginx perché potrebbero esserci possibili falle di sicurezza non considerate a causa dell'utilizzo in un modo che non è stato progettato per funzionare


forse la mia risposta avrebbe dovuto essere più chiara non è stato progettato per eseguire il proxy in avanti - gli sforzi di patch scimmia non offriranno pieno supporto proxy come richieste proxy a porte non standard (porta 80)
anthonysomerset

3

Se si desidera utilizzare un proxy HTTP / HTTPS, è necessario utilizzare Squid. È stato scritto per fare esattamente questo. Nginx è stato scritto per agire come proxy inverso e bilanciamento del carico, ma non come proxy forward.


Conosco calamari / oops / tinyproxy / ecc. Chiedo solo questa domanda per il bene di interesse accademico
Vlad
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.