Ho un server Nginx/Gunicorn/Django distribuito su una macchina Centos 6 con solo la porta SSL (443) visibile al mondo esterno. Quindi, a meno che il server non venga chiamato con lo https://
, non si otterrà alcuna risposta. Se lo chiami con un http://domain:443
, riceverai semplicemente un messaggio 400 Richiesta non valida. La porta 443 è l'unico modo per colpire il server.Nginx/Django Admin POST https solo
Sto utilizzando Nginx per servire i miei file statici (CSS, ecc.) E tutte le altre richieste sono gestite da Gunicorn, che sta eseguendo Django allo http://localhost:8000
. Quindi, la navigazione su https://domain.com
funziona bene, così come i collegamenti all'interno del sito admin, ma quando invio un modulo nell'amministratore di Django, l'https viene perso sul reindirizzamento e inviato a http://domain.com/
request_uri che non riesce a raggiungere il server. L'azione POST funziona correttamente anche così e il database viene aggiornato.
Il file di configurazione è elencato di seguito. La sezione di posizione location /
è dove mi sento come la soluzione dovrebbe essere trovata. Ma non sembra che le direttive proxy_set_header X-*
abbiano alcun effetto. Mi manca un modulo o qualcosa del genere? Sto eseguendo nginx/1.0.15.
Tutto quello che riesco a trovare sui punti internet per il X-Forwarded-Protocol https
come dovrebbe fare qualcosa, ma non ottengo alcun cambiamento. Non riesco nemmeno a far funzionare il debug sul server remoto, anche se il mio prossimo passo potrebbe dover essere compilato localmente con il debug abilitato per ottenere ulteriori indizi. L'ultima risorsa è quella di esporre il porto 80 e reindirizzare tutto ... ma ciò richiede alcune pratiche burocratiche.
[http://pastebin.com/Rcg3p6vQ](My nginx configurare argomenti)
server {
listen 443 ssl;
ssl on;
ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/key.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
server_name example.com;
root /home/gunicorn/project/app;
access_log /home/gunicorn/logs/access.log;
error_log /home/gunicorn/logs/error.log debug;
location /static/ {
autoindex on;
root /home/gunicorn;
}
location/{
proxy_pass http://localhost:8000/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Protocol https;
}
}