2011-09-07 7 views
20

ho un app flask, ospitato da uwsgi, con nginx come proxy inverso per uwsgi, utilizzando il built-in uwsgi proxy module. Ogni volta che visito una pagina che reindirizza a un'altra pagina, l'intestazione Località punta a un URL non HTTPS. Per esempio:indesiderati HTTPS -> HTTP redirect con nginx + uwsgi + pallone app

$ socat openssl:my-web-server:443 stdio 
GET/HTTP/1.0 
Host: my-web-server 

HTTP/1.1 302 FOUND 
Server: nginx/1.0.4 
[...] 
Location: http://my-web-server/login 

mio nginx config si presenta così:

server { 
    listen 80; 
    listen 443 ssl; 
    server_name my-web-server; 
    charset utf-8; 

    ssl_certificate /etc/nginx/certs/server.pem; 
    ssl_certificate_key /etc/nginx/certs/server.key; 

    location/{ 
     uwsgi_pass unix:/tmp/uwsgi.sock; 
     include uwsgi_params; 
    } 
} 

risposta

28

uwsgi deve essere passato lo schema (http o https) utilizzata per servire la richiesta al fine di scrivere l'intestazione posizione corretta.

Per impostazione predefinita, nel file /etc/nginx/uwsgi_params sono impostate numerose impostazioni. La riga include uwsgi_params; nel file di configurazione è ciò che li carica.

Per qualsiasi motivo, lo schema non è una di queste impostazioni predefinite. Questo può essere risolto aggiungendo:

uwsgi_param UWSGI_SCHEME $scheme; 

alla configurazione nginx dopo la linea include uwsgi_params;, oppure aggiungendo al file /etc/nginx/uwsgi_params direttamente.

+0

questo era esattamente quello che stavo cercando. Grazie. – stephenmuss