0
我使用Nginx作爲web服務器,使用gunicorn django服務器的反向代理。Django SSL重定向片段修改,不按預期方式工作
我嘗試使用SSLRedirect片段從這裏:
http://djangosnippets.org/snippets/85/
因爲這個片段將始終從is_secure()
返回false與我的設置,導致重定向循環,我不得不做出一些改變。
SSL有效,但是當我訪問http://domain.net/main
時,它不會重定向到https://domain.net/main
。它不應該這樣做嗎?
下面列出我做了修改:
if 'HTTP_X_FORWARDED_PROTOCOL' in request.META:
return True
在我的nginx的配置(我只需要SSL,HTTP不是必需的):
server {
listen 8888;
server_name domain.net;
ssl on;
ssl_certificate /path/to/domain.pem;
ssl_certificate_key /path/to/domain.key;
# serve directly - analogous for static/staticfiles
location /media/ {
root /path/to/root;
}
location /static/ {
root /path/to/root;
}
location/{
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://127.0.0.1:8881/;
# note this line
proxy_set_header X-Forwarded-Protocol https;
}
}
這似乎沒有工作,因爲只使用一個端口(不是443)偵聽8888和端口80正在由別的 – zentenk 2012-02-14 03:14:22
那麼,有什麼問題IM ?如果您無法連接80端口,則無需重新定向任何內容。用戶除了HTTPS之外別無選擇。 – 2012-02-14 15:15:09
是的,但是當用戶通過同一個端口上的HTTP連接時,會彈出錯誤的請求錯誤。我想將用戶連接重定向到端口8888上的http以重定向到https。 – zentenk 2012-02-14 15:57:59