Tho*_*zco 7 ssl nginx proxy web-applications http-headers
我正在配置 Nginx 服务器,以便作为反向代理为 Django 应用程序(在 Gunicorn 上运行)提供服务。
我的问题是我希望我的网站使用 HTTPS 进行保护,因此我希望我的 Django 应用程序能够确定连接是否安全。我使用的是 Django 1.4,所以我可以访问SECURE_PROXY_SSL_HEADER我配置为SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https').
现在,正如文档中提到的,我需要确保 Nginx 仅在需要时添加标头,而在不需要时将其剥离。因为我希望我的 Nginx 配置尽可能 DRY,所以我不想有两个配置文件(一个用于端口 80,一个用于端口 443)。
因此,我想知道 Nginx 中是否有一种方法可以确定连接是否为 https,并相应地添加(或剥离)标头。
nh2*_*nh2 13
该解决方案并没有描述如何剥去只有HTTP头,因为问的问题标题。
您问题的安全解决方案是添加
proxy_set_header X-Forwarded-Protocol $scheme;
Run Code Online (Sandbox Code Playgroud)
它将在 HTTP 请求和HTTPS 请求上设置X-Forwarded-Protocol为。httphttps
这可确保在客户端设置时覆盖此标头,如https://docs.djangoproject.com/en/1.4/ref/settings/#secure-proxy-ssl-header 的要求。
注意:如果您正在共享您的 Django 项目,请确保在您包含SECURE_PROXY_SSL_HEADER在 中时充分警告用户这一点settings.py,并且默认情况下最好将其注释掉。
| 归档时间: |
|
| 查看次数: |
9993 次 |
| 最近记录: |