La configurazione di Nginx porta a un ciclo di reindirizzamento infinito

Quindi ho esaminato ogni configurazione di esempio che ho trovato e tuttavia ogni volta che provo a visualizzare una pagina che richiede ssl, finisco in un ciclo di reindirizzamento. Sto utilizzando nginx / 0.8.53 e il passeggero 3.0.2.

Ecco la configurazione di ssl

server { listen 443 default ssl; server_name .com www..com; root /home/app//public; passenger_enabled on; rails_env production; ssl_certificate /home/app/ssl/.com.pem; ssl_certificate_key /home/app/ssl/.key; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X_FORWARDED_PROTO https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Url-Scheme $scheme; proxy_redirect off; proxy_max_temp_file_size 0; location /blog { rewrite ^/blog(/.*)?$ http://blog..com/$1 permanent; } location ~* \.(js|css|jpg|jpeg|gif|png)$ { if (-f $request_filename) { expires max; break; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } 

Ecco la configurazione non-ssl

 server { listen 80; server_name .com www..com; root /home/app//public; passenger_enabled on; rails_env production; location /blog { rewrite ^/blog(/.*)?$ http://blog..com/$1 permanent; } location ~* \.(js|css|jpg|jpeg|gif|png)$ { if (-f $request_filename) { expires max; break; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } 

Fammi sapere se ci sono ulteriori informazioni che posso fornire per aiutare a diagnosticare il problema.

È la tua linea qui:

  listen 443 default ssl; 

cambiarlo in:

 listen 443; ssl on; 

Questo chiamerò il vecchio stile. Inoltre, insieme a

  proxy_set_header X_FORWARDED_PROTO https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Url-Scheme $scheme; proxy_redirect off; proxy_max_temp_file_size 0; 

ha fatto il trucco per me. Ora vedo che mi manca la vera linea IP che hai, ma finora mi sono liberato del mio problema di loop infinito con ssl_requirement e ssl_enforcer.

Ho scoperto che era questa la linea

  proxy_set_header Host $http_host; 

Quale dovrebbe essere cambiato in

  proxy_set_header Host $host; 

Secondo la documentazione di nginx, usando $ http_host si passa “l’intestazione della richiesta invariata”.

Hai provato a utilizzare “X-Forwarded-Proto” invece di X_FORWARDED_PROTO?

Ho incontrato un problema con questa intestazione prima, non causava reindirizzamenti, ma la modifica di questa intestazione ha risolto il problema per me.

Dato che hai una dichiarazione di riscrittura trovata in entrambe le sezioni ssl e non-ssl

 location /blog { rewrite ^/blog(/.*)?$ http://blog..com/$1 permanent; } 

Dov’è la sezione server per blog..com ?? Potrebbe essere la fonte del problema?

Ho avuto un problema simile per la mia applicazione symfony2, anche se forma una causa diversa: avevo impostato fastcgi_param HTTPS off; quando ovviamente fastcgi_param HTTPS on; bisogno di fastcgi_param HTTPS on; nella mia configurazione di nginx.

  location ~ ^/(app|app_dev|config)\.php(/|$) { satisfy any; allow all; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS on; } 

Nel caso in cui qualcun altro si imbattesse in questo, stavo tentando di configurare sia http che https tramite lo stesso blocco server {}, ma ho aggiunto solo la direttiva “listen 443” ritenendo che “questa linea fosse predefinita e implicita” significava che avrebbe anche ascolta anche l’80, non è così. Scomunicando la linea “listen 80” in modo che entrambe le linee di ascolto fossero presenti, il loop infinito veniva corretto. Non ho idea del motivo per cui avrebbe persino avuto un reindirizzamento, ma è successo.

Per coloro che stanno cercando disperatamente perché il loro proprio continui a fare un ciclo di reindirizzamento nonostante abbia un buon file di configurazione, ho trovato il motivo per cui non funziona.

La mia configurazione: nginx + php-fpm + mysql su un nuovo centesimo 6.5

durante l’installazione di php-fpm e nginx, l’authorization predefinita su / var / lib / php / session / è root: apache

php-fpm attraverso la sessione php di nginx store qui, se nginx non ha avuto l’authorization a scrivere fallisce miseramente per mantenere qualsiasi sessione di login, risultando in un ciclo infinito.

Quindi, giustifica aggiungere nginx nel gruppo apache (usermod -a -G apache nginx) o cambiare la proprietà di questa cartella.

Buona giornata.

X_FORWARDED_PROTO come nel tuo file può causare errori e lo ha fatto nel mio caso. X-Forwarded-Proto è corretto mentre gli hiphens sono più importanti delle lettere maiuscole o minuscole.

Puoi evitare questi problemi attenendosi alle convenzioni;)

vedere anche qui: Intestazioni HTTP personalizzate: convenzioni di denominazione e qui: http://www.ietf.org/rfc/rfc2047.txt