繁体   English   中英

如何使用Cloudflare的免费SSL在Apache + mod_wsgi堆栈上的Django应用程序上强制使用https?

[英]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的工作方式。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM