在django站点上强制使用ssl。
django-sslif的Python项目详细描述
你想在你的django网站上强制使用https吗?你来对地方了
元
- 作者:Randall Degges
- 电子邮件:r@rdegges.com
- 网站:http://www.rdegges.com
- 状态:保持,活动
目的
在django站点上启用ssl应该很容易,就像在一行代码中一样 容易这就是我写django-sslify的原因!
这个项目的目标是让人们可以很容易地在 他们的django站点、api、web应用程序或您正在构建的任何内容的页面。固定 你的网站应该不难。
安装
要安装django-sslify,只需运行:
$ pip install django-sslify
这将自动安装库的最新版本。
如果使用Heroku,则应添加 django-sslify>=0.2到您的requirements.txt文件:
$echo'django-sslify>=0.2.0' >> requirements.txt
一旦你这样做了,下次你把你的代码推到Heroku这个库 将自动为您安装。
用法
要使用这个库并在django站点上强制使用ssl,您需要做的就是 正在修改您的settings.py文件,并准备 sslify.middleware.SSLifyMiddleware到您的MIDDLEWARE_CLASSES设置:
# settings.pyMIDDLEWARE_CLASSES=('sslify.middleware.SSLifyMiddleware',# ...)
注意
确保sslify.middleware.SSLifyMiddleware是第一个中间件 类,因为这将确保如果用户发出不安全的请求 (通过http),它们将在任何实际的 正在处理。
如果您使用的是Heroku,则还应将以下设置添加到 django设置文件:
SECURE_PROXY_SSL_HEADER=('HTTP_X_FORWARDED_PROTO','https')
这将确保django能够正确地检测安全连接。
使用自定义ssl端口
如果您的站点在非标准SSL端口上运行,则可以更改 django-sslify通过设置特殊变量的默认重定向行为 在settings.py文件中:
SSLIFY_PORT=999
禁用SSLify
如果要在某些环境中禁用sslify(用于本地开发, 或者运行单元测试,最好的方法是修改设置文件 并添加以下内容:
SSLIFY_DISABLE=True
您还可以仅对某些请求禁用sslify(对于公开 仅限http的web hook url等 SSLIFY_DISABLE_FOR_REQUEST列表的参数。从返回True 您的可调用将禁用SSL重定向
SSLIFY_DISABLE_FOR_REQUEST=[lambdarequest:request.get_full_path().startswith('/no_ssl_please')]
注释
此代码最初取自 this StackOverflow thread
多年来,此代码已被采用,用于Heroku和非Heroku。 平台。
如果您正在使用heroku,并且不知道如何设置ssl,请阅读 this great article 其中谈到使用新的ssl端点插件(,这完全是岩石!)
NGINX+无限重定向
如果您在nginx负载均衡器后面运行django应用程序,并且看到 无限重定向,解决方案是添加以下行:
proxy_set_header X-Forwarded-Proto $scheme;
到您的nginx.conf文件,在相关的location块内。这个 Stack Overflow thread 也可能有用。
贡献
这个项目是唯一可能的,因为惊人的贡献者谁的工作
如果你想改进这个库,请给我一个请求我很高兴 查看和合并拉取请求。
标准贡献工作流应该如下所示:
- 在github上派生此项目。
- 在主分支中进行一些更改(此项目很简单,因此不需要 使事情复杂化。
- 准备好后发送拉取请求。
另外,如果您正在进行更改,请为您的更改编写测试–此 project有一个完整的测试套件,您可以轻松地修改/测试。
要运行测试套件,可以使用以下命令:
$cd django-sslify $ python setup.py develop $ python manage.py test sslify
更改日志
所有库更改,按降序排列。
版本0.2.5
2014年12月28日发布。
- 添加新的SSLIFY_DISABLE_FOR_REQUEST设置,允许用户 指定可以选择拒绝ssl的函数-这对于 在某些情况下,您可能希望在整个站点范围内强制使用ssl 环境(webhooks不支持ssl,例如)。
版本0.2.4
2014年11月23日发布。
- 添加指定自定义SSL端口的功能。
- 完全改造了文档。
- 更改项目徽标/吉祥物^^
- 添加自定义SSL端口的新测试