我的服务器运行Django + Gunicorn + Nginx。
我已经添加了SSL证书并configuration了Nginx以将httpredirect到https。 当收到https请求时,Nginx将它作为http传递给Gunicorn。
我的程序有时会返回HttpResponseRedirect ,并且浏览器得到一个redirect响应,并重新请求http,所以Nginxredirect到https。
我怎样才能避免这一点? 如何configuration服务器,使第一个redirect直接指向https URL?
在Djangopipe理中上传文件时出现UnicodeEncodeError
http 403错误+“readv()失败(104:连接重置由同级)而读取上游”
img HTML标记不尊重HTTP刷新标题(但在浏览器中加载图像URL)
如何在Windows Vista上设置django-admin.py?
Nginx / gunicorn Django Rest Framework应用程序的端口代理
与WsgiDaemonProcess的django apacheconfiguration不工作
2个Bitnami Django项目同时运行Apache Wsgi
Django 1.8.4和uWsgiconfiguration有几个进程的语言切换问题
Django减less模板渲染时间
在Nginx配置(在location块内),指定这个:
proxy_redirect off; proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect告诉Nginx,如果后端返回一个HTTP重定向,它应该保持原样。 默认情况下,Nginx假定后端是愚蠢的,并试图变得聪明; 如果后端返回一个“重定向到http:// localhost:8000 / somewhere ”的HTTP重定向,那么Nginx会用类似于http://yourowndomain.com/somewhere的东西来替换它。“但是Django不是愚蠢的可以配置成不是愚蠢的)。
Django不知道请求是通过HTTPS还是纯HTTP进行的; Nginx知道,但是它后来对于Django后端的请求总是纯HTTP。 我们告诉Nginx使用X-Forwarded-Proto HTTP头传递这个信息,这样相关的Django功能如request.is_secure()就能正常工作。 您还需要在SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO','https')设置SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO','https') 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。