当前位置: 首页 > 面试题库 >

如何使用Django / nginx部署仅HTTPS站点?

斜成济
2023-03-14
问题内容

我最初的问题是如何为Django登录页面启用HTTPS,唯一的回应是建议我- 将整个站点设置为仅HTTPS。

鉴于我正在使用Django 1.3和nginx,将网站设为仅HTTPS的正确方法是什么?

一个回应提到了一个中间件解决方案,但有一个警告:

Django在维护POST数据时无法执行SSL重定向。请整理你的视图,以便仅在GET期间进行重定向。

关于服务器故障的有关nginx重写为https的问题,还提到了POST丢失数据的问题,而我对nginx不够熟悉,无法确定解决方案的工作情况。

和EFF的建议去HTTPS只,注意到:

设置时,应用程序必须在cookie上设置Secure属性。此属性指示浏览器仅通过安全(HTTPS)传输而不是不安全(HTTP)发送cookie。

像Django-auth这样的应用程序是否可以将Cookie设置为安全?还是我必须编写更多的中间件?

因此,就以下方面而言,配置Django / nginx组合以实现仅HTTPS的最佳方法是:

  • 安全
  • POST数据的保存
  • Cookies处理正确
  • 与其他Django应用(例如Django-auth)的交互正常工作
  • 我不知道的其他任何问题:)

编辑 -我在测试多个浏览器时发现的另一个问题。说我有URL https://mysite.com/search/,它有一个搜索表单/按钮。我按一下按钮,处理在Django像往常一样的形式,做一个Django HttpResponseRedirect来http://mysite.com/search?results=”foo”。Nginx https://mysite.com/search?results="foo"根据需要将其重定向到。

但是,重定向发生时,Opera会有可见的闪光。而且它会在每次搜索中发生,即使是对于相同的搜索词(我想https确实不会缓存:)更糟糕的是,当我在IE中对其进行测试时,我首先会收到以下消息:

You are about to be redirected to a connection that is not secure - continue?

单击“是”后,紧接着是:

You are about to view pages over a secure connection - continue?

尽管第二个IE警告选项可以将其关闭-第一个警告则没有,因此每次有人进行搜索并将其重定向到结果页面时,他们至少会收到一条警告消息。


问题答案:

对于John C的答案的第二部分,以及Django 1.4 + …

你可以将更request.scheme改为,而不是扩展HttpResponseRedirect https。因为Django在Nginx的反向代理后面,所以它不知道原始请求是安全的。

在你的Django设置中,设置SECURE_PROXY_SSL_HEADER设置:

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

然后,你需要Nginx在反向代理中设置自定义标头。在Nginx网站设置中:

location / {
    # ... 
    proxy_set_header X-Forwarded-Proto $scheme;
}

这样request.scheme == ‘https’并request.is_secure()返回True。 request.build_absolute_uri()返回https://…等等



 类似资料:
  • 我在Nginx上使用uwsgi运行我的DJango应用程序。它目前正在使用这些配置: chdir=/TMP/SRC/ 进程=4 线程=2 server_name 192.168.56.104; charset UTF-8; #最后,将所有非媒体请求发送到Django服务器。 我已经生成了证书。

  • 本文向大家介绍Nginx+Tomcat多站点部署的方法,包括了Nginx+Tomcat多站点部署的方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍了Nginx+Tomcat多站点部署的方法,分享给大家,具体如下: Tomcat配置: 添加多域名: Engine节点下: 添加域名1 添加域名2 注意,还需要一个默认语句,即name="localhost"的域名,否则tomcat偶尔会报空指针错

  • 本文向大家介绍浅谈Django+Gunicorn+Nginx部署之路,包括了浅谈Django+Gunicorn+Nginx部署之路的使用技巧和注意事项,需要的朋友参考一下 前言 最近,我已经成功将我的个人网站从 Flask 迁移到 Django 了,最早接触 Django 的时候大概是在 4 年前,我记得那个时候 Django 中的路由配置使用 正则 来进行的,但是我有特别烦这个东西,所以就果断弃

  • 问题内容: 我们将部署一个新的Django网站,并希望使用Google Analytics(分析)来跟踪该网站上的访问量。但是,我们不希望开发实例的所有匹配都有助于Google Analytics(分析)统计数据。 有几种方法可以解决此问题: 在settings.py中有一个配置选项,基本模板可用来决定是否包括适当的元素, 维护一个分支,在部署到生产服务器之前,我们会进入该分支,我们确保其中包括以

  • 在 Seahub 端启用 https 免费 Self-Signed SSL 数字认证用户请看. 如果你是 SSL 付费认证用户可跳过此步. 通过 OpenSSL 生成 SSL 数字认证 openssl genrsa -out privkey.pem 2048 openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095 修改

  • 在详细信息中,路径没有设置为,而是设置为。哪里错了?