[英]How to use Cloudflare's free SSL to force https on my Django application on Apache+mod_wsgi stack?
[英]How to use django-sslify to force https on my Django+nginx+gunicorn web app, and rely on Cloudflare's new free SSL?
Cloudflare現在免費提供SSL ,如果我不能在我的網站上利用這一點,那將是一個愚蠢的行為,並且在嘗試過程中打破一切的徹頭徹尾的傻瓜。
我可以很好地編寫應用程序代碼,但是當涉及到設置或配置https / nginx / gunicorn / etc / idon'tknowtheminminology時,我幾乎無法遵循Googled說明。
我想使用django-sslify在我的Django網絡應用程序上強制https。 考慮到以下已知事實,如何
在不破壞生活平衡的情況下
實現這一目標?
location / {
proxy_pass http://127.0.0.1:8001; ... }
proxy_pass http://127.0.0.1:8001; ... }
此外,我的服務器為Phonegap應用程序提供Django Rest Framework api,需要考慮嗎? 如果我需要提供附加信息,請告訴我,我會回復您。 謝謝你看看這個! :)
CloudFlare允許您啟用特定頁面規則 ,其中之一是強制SSL(通過執行硬重定向 )。 除了 django-sslify
或django-secure
之外,這是一件很棒的事情
除了設置SSL重定向之外,您還需要告訴Django處理安全請求。 幸運的是, Django為這樣做提供了一個不錯的指南 ,但有一些事情沒有提及,但我與nginx有關。
在Django設置中,您需要告訴Django如何檢測安全請求
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
在您的nginx配置中,您需要設置X-Forwarded-Protocol
標頭(並且X-Forwarded-For
/ X-Scheme
標頭也很有用)。
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
您還需要向下代理Host
頭,因此Django能夠讀取正確的主機和端口,用於生成絕對URL和CSRF等。
proxy_set_header Host $http_host;
請注意,我使用$http_host
變量而不是$host
或$host:$server_port
。 這將確保Django仍然會在非標准端口上遵守CSRF請求,同時仍然為您提供正確的絕對URL。
與大多數與nginx和gunicorn相關的事情一樣,YMMV在你做了幾次之后會變得更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.