![](/img/trans.png)
[英]How to use django-sslify to force https on my Django+nginx+gunicorn web app, and rely on Cloudflare's new free SSL?
[英]How to use Cloudflare's free SSL to force https on my Django application on Apache+mod_wsgi stack?
我想在由Apache + mod_wsgi堆栈运行的Django应用程序中使用Cloudflare提供的免费SSL (DNS)服务。 到目前为止 ,我可以找到Nginx + uWSGI堆栈的安装示例,但找不到Apache + mod_wsgi堆栈的安装示例。 我在这里https://stackoverflow.com/a/27650503/2051292遵循此答案。 但是我无法将解决方法从Nginx配置转换为Apache / mod_wsgi。 我遇到了一些问题,
即使我使用https来访问网页,也可以单击任何内部链接或提交登录/注册表单,但这些访问仅会访问http页面。 ( 我实际上希望所有链接都转到https页面 )
在网页表单(登录,注册)上,我收到CSRF失败403禁止访问错误。 我登录https页面,但经过验证后,重定向到具有CSRF错误的http页面。
有时调整配置会导致重定向循环。
想知道将免费的Cloudflare SSL与Apache + mod_wsgi堆栈配合使用的工作配置以及Django设置
编辑:如果您不知道,这就是Cloudflare的免费SSL的工作方式。
我没有SSL证书,我正在尝试通过使用Flexible SSL来使用免费的SSL 。 即 ,从用户到Cloudflare DNS的连接将为https ,而Cloudflare与我的服务器之间的连接将为http 。
注意:目前,我没有使用django-sslify之类的任何中间件。 但是使用它会以任何其他方式帮助您。 我也可以。
虽然我不知道使用Cloudflare的具体细节,但是一旦您拥有适当的证书就知道了另一个答案中提到的代理设置,它应该是相同的Apache配置。 这是我用于在CentOS下使用mod_wsgi和mod_ssl托管Django的示例Apache配置。 在这种配置下,我们甚至都不会监听端口80。这假定您的网站托管在https://example.com/mysite
,并且已将其部署到mysiteuser
用户下的/var/www/html/mysite
与一个名为mysitevenv
的virtualenv:
LoadModule wsgi_module modules/mod_wsgi.so
LoadModule ssl_module modules/mod_ssl.so
WSGISocketPrefix /var/run/wsgi
NameVirtualHost *:443
Listen 443
<VirtualHost *:443>
ServerName example.com
ErrorLog /home/mysiteuser/apache_errors.log
WSGIDaemonProcess mysite-https python-home=/home/mysiteuser/.virtualenvs/mysitevenv
WSGIScriptAlias /mysite /var/www/html/mysite/mysite/wsgi.py process-group=mysite-https application-group=mysite-https
WSGIProcessGroup so-https
Alias /mysite/static/ /var/www/html/mysite/static/
SSLENGINE on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLProtocol all -SSLv2
</VirtualHost>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.