Mam serwer Nginx/Gunicorn/Django wdrożony na komputerze Centos 6 z widocznym tylko światem zewnętrznym portem SSL (443). Więc jeśli serwer nie zostanie wywołany z https://
, nie otrzymasz żadnej odpowiedzi. Jeśli zadzwonisz pod numer http://domain:443
, otrzymasz jedynie 400 wiadomość o złym żądaniu. Port 443 to jedyny sposób na trafienie na serwer.Nginx/Django Admin POST https only
Używam Nginx do udostępniania moich plików statycznych (CSS itp.), A wszystkie inne żądania są obsługiwane przez Gunicorn, który działa pod Django pod numerem http://localhost:8000
. Tak więc, nawigacja do https://domain.com
działa dobrze, podobnie jak linki w witrynie administratora, ale po przesłaniu formularza do administratora Django, https jest tracone w przekierowaniu i jestem wysyłany do http://domain.com/
request_uri, który nie dociera do serwera. Akcja POST działa poprawnie, a baza danych jest aktualizowana.
Mój plik konfiguracyjny jest wymieniony poniżej. Sekcja o lokalizacji location /
to miejsce, w którym mam ochotę znaleźć rozwiązanie. Ale nie wydaje się, aby dyrektywy miały jakiś wpływ. Czy brakuje mi modułu lub czegoś? Używam nginx/1.0.15.
Wszystko, co mogę znaleźć w internecie, wskazuje na X-Forwarded-Protocol https
, tak jak powinno coś zrobić, ale nie otrzymuję żadnych zmian. Nie mogę też uzyskać debugowania działającego na serwerze zdalnym, ale moim następnym krokiem może być kompilowanie lokalnie z włączonym debugowaniem, aby uzyskać więcej wskazówek. Ostatnim wyjściem jest ujawnienie portu 80 i przekierowanie wszystkiego ... ale to wymaga pewnych formalności.
[http://pastebin.com/Rcg3p6vQ](My nginx skonfigurować argumenty)
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;
}
}