微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django的HttpResponseRedirect是http而不是https

我的服务器运行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有几个进程的语言切换问题

Wsgi中的两个单独的django站点(根和/两个)

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] 举报,一经查实,本站将立刻删除。

相关推荐