2015-07-17 16 views
7

Ho utilizzato proxy_set_header Host $host; per impostare l'intestazione host sull'host della richiesta originale. In nginx 1.4.1 questo stava funzionando bene. Ora, dopo l'aggiornamento alla versione 1.8.0, ricevo l'IP locale anziché l'host passato dal browser.

Perché è successo e come lo risolvo?

+0

Credo che questo sia causato da un 'host_host_host_set_header '' in 'nginx.conf' e sembra anche essere correlato alla direttiva' server_name'. Devo ancora determinare esattamente come interagiscono, ma ho trovato l'impostazione 'proxy_set_header Host $ host' nella tua direttiva' location', mentre anche omettendo il 'server_name' funziona interamente nel nostro caso – Basic

+0

Hai mai trovato una soluzione? Sto avendo lo stesso problema ... 1.7 ha funzionato, ma l'ultimo in ppa (1.12) non lo fa. Niente da fare invia l'intestazione host corretta a monte. –

risposta

0

tl; dr; Non sono sicuro di quando ha cambiato, ma le versioni più recenti di nginx - invece di ssl_protocols ...; - la tua conf dovrebbe essere:

proxy_ssl_server_name on; proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

Fonte: https://stackoverflow.com/a/25330027

===

Se eri come me, stavi fraintendendo i file di registro e vedevi host=example.com. Invece di questo è l'host inviato all'origine, questo sembra significare host-as-defined-in-nginx-conf i.e host virtuale.

(Accensione error_log debug; hanno dimostrato che l'intestazione host era stato impostato correttamente.)

Il file di registro dovrebbe contenere anche un errore come "SSLv3 fallimento avviso stretta di mano".

Problemi correlati