在您的Django网站上强制启用SSL。
项目描述
您想在您的Django网站上强制使用HTTPS吗?您来对地方了!
元信息
作者:Randall Degges
状态:维护中,活跃
目的
在您的Django网站上启用SSL应该很简单,简单到只需一行代码。这就是我编写django-sslify的原因!
这个项目的目标是让人们在他们的Django网站、API、Web应用或其他任何他们正在构建的项目上轻松地强制使用HTTPS。确保您的网站安全不应该很难。
安装
要安装django-sslify,只需运行
$ pip install django-sslify
这将自动安装库的最新版本。
如果您正在使用Heroku,您应该在您的requirements.txt文件中添加django-sslify>=0.2
$ echo 'django-sslify>=0.2.0' >> requirements.txt
完成此操作后,您下次将代码推送到Heroku时,此库将自动为您安装。
使用方法
要使用这个库并在您的Django站点强制使用SSL,您只需修改您的< span class="docutils literal">settings.py span> 文件,并在< span class="docutils literal">MIDDLEWARE_CLASSES span> 设置中添加 sslify.middleware.SSLifyMiddleware span>
# settings.py
MIDDLEWARE_CLASSES = (
'sslify.middleware.SSLifyMiddleware',
# ...
)
如果您使用Heroku,您还应在Django设置文件中添加以下设置
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
这确保Django能够正确检测到安全连接。
使用自定义SSL端口
如果您的网站运行在非标准SSL端口上,您可以通过在< span class="docutils literal">settings.py span> 文件中设置一个特殊变量来更改 django-sslify span> 的默认重定向行为
SSLIFY_PORT = 999
禁用SSLify
如果您想在某些环境中禁用SSLify(用于本地开发或运行单元测试),最好的方法是修改您的设置文件并添加以下内容
SSLIFY_DISABLE = True
您还可以通过向 SSLIFY_DISABLE_FOR_REQUEST span> 列表中添加一个带有单个请求参数的可调用对象来仅禁用某些请求的SSLify(对于公开仅HTTP的Web钩子URL等很有用)。从您的可调用对象返回 True span> 将禁用SSL重定向。
SSLIFY_DISABLE_FOR_REQUEST = [
lambda request: request.get_full_path().startswith('/no_ssl_please')
]
注意
此代码最初取自 此StackOverflow线程。
多年来,此代码已适应在Heroku和非Heroku平台上运行。
如果您使用Heroku,并且不知道如何设置SSL,请阅读 这篇出色的文章,它介绍了使用新的SSL端点插件(真是太棒了!)。
NGINX + 无限重定向
如果您在NGINX负载均衡器后面运行Django应用程序,并看到无限重定向,解决方案是在 nginx.conf span> 文件中的相关 location span> 块内添加以下行
proxy_set_header X-Forwarded-Proto $scheme;
这可能也很有用 Stack Overflow线程。
贡献
这个项目之所以能够实现,要归功于那些在它上面工作的惊人的贡献者!
如果您想改进这个库,请向我发送拉取请求!我很乐意审查和合并拉取请求。
标准的贡献工作流程应该看起来像这样
在GitHub上Fork此项目。
在主分支上做一些更改(由于此项目很简单,所以没有必要使事情复杂化)。
准备好后发送拉取请求。
另外,如果您正在做更改,请为您的更改编写测试 - 此项目有一个完整的测试套件,您可以轻松地修改/测试。
要运行测试套件,您可以使用以下命令
$ cd django-sslify
$ python setup.py develop
$ python manage.py test sslify
更改日志
按降序排列的所有库更改。
版本 0.2.5
发布于2014年12月28日。
添加新的 SSLIFY_DISABLE_FOR_REQUEST span> 设置,允许用户指定可以选择拒绝SSL的函数 - 这对于您可能希望强制整个网站使用SSL但除了一些特殊情况(例如不支持SSL的webhooks)的情况非常有用。
版本 0.2.4
发布于2014年11月23日。
添加指定自定义SSL端口的能力。
彻底更新文档。
更改项目标志/吉祥物 ^ ^
为自定义SSL端口添加新测试。
项目详情
django-sslify-0.2.7.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | f6bfd21048c7dfc95b39659a3da77775d6db1c1f7a745805ccc6c6138f783b6d |
|
MD5 | aba428b5d1a23fa62beb50b4ee7732af |
|
BLAKE2b-256 | 50437d6fee8cd6811a364b960fff46267db88ecef21112233e7f0422fd5a6573 |