2015-07-24 1 views
0

Я хотел использовать службы (DNS) бесплатно SSL предоставленный Cloudflare в моем Django приложение, запущенное на Apache + mod_wsgi стека. Я могу найти примеры установки для Nginx + uWSGI стек, но до сих пор не для стека Apache + mod_wsgi. Я следовал этому ответу здесь https://stackoverflow.com/a/27650503/2051292. Но я не смог преобразовать обходное решение из конфигурации Nginx в Apache/mod_wsgi. Я столкнулся несколько проблем,Как использовать бесплатный SSL Cloudflare для принудительного использования https в моем приложении Django в стеке Apache + mod_wsgi?

  • Даже я использую протокол HTTPS для посещения веб-страниц, нажав на любой из внутренних ссылок или подавших Логин/регистрационные формы идет только HTTP-страниц. (я на самом деле хочу, чтобы все ссылки на Гот на HTTPS странице)

  • На формах веб-страницах (логин, регистрацию) я получаю CSRF Ошибку 403 Access Forbidden ошибки. И я заходил на страницу https, но после проверки перенаправляет на страницу http с Ошибка CSRF.

  • Иногда настройка конфигурации приводит к циклу перенаправления.

Вы хотите знать рабочую конфигурацию для использования CloudFlare бесплатно SSL с Apache + стек mod_wsgi и настройки Django также для установки

EDIT: В случае, если вы не знаете, , так работает SSL SSL Cloudflare. how Cloudflare's free SSL works

Я не имею сертификат SSL со мной, я пытаюсь использовать бесплатный SSL с помощью Гибкой SSL. i.e. Подключение пользователя к Cloudflare DNS будет https, а соединение между Cloudflare и моим сервером будет http.

Примечание: В настоящее время я НЕ с использованием любого промежуточного уровня, как Джанго-sslify. Но использование этого поможет любым другим способом. Я в порядке с этим.

+0

Вы пробовали используя PageRules, чтобы заставить https: // через CloudFlare? Всегда используется опция https: //, доступная в PageRules. Информация о PageRules: https: //support.cloudflare.com/hc/en-us/articles/200168306-Is-there-a-tutorial-for-Page-Rules- – damoncloudflare

+0

Да, используя pageRules для принудительного «https» приводит меня к бесконечным циклам перенаправления или удалению форсинга из Django. в "CSRF токен не удалось", как я указал выше. В NginX мне нужно передать эти три заголовка HTTP, чтобы избежать этих ошибок. 'proxy_set_header Схема X-Scheme $; proxy_set_header X-Forwarded-Protocol $ scheme; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_set_header Host $ http_host; ' , но я не могу этого сделать, так как я не уверен, как это сделать в Apache. –

+0

Хорошо, делаете ли вы переадресацию прямо на свой сервер, а затем используете PageRules? Я мог видеть, как это может вызвать проблему. – damoncloudflare

ответ

0

Хотя я не знаю специфики использования Cloudflare, она должна быть той же конфигурацией Apache, когда у вас есть соответствующие сертификаты, которые не определили настройки прокси-сервера, упомянутые в другом ответе. Вот пример конфигурации Apache, который я использовал для размещения Django с mod_wsgi и mod_ssl в CentOS. При такой конфигурации, мы не даже слушать порт 80. Это предполагает, ваш веб-сайт размещен на https://example.com/mysite, и что он будет развернут на /var/www/html/mysite под пользователем mysiteuser с virtualenv называется mysitevenv:

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> 
+1

Ваш ответ будет работать только в том случае, если у меня есть сертификат SSL. Я пытаюсь использовать бесплатную функцию SSL уровня SSL, предоставляемую CloudFlare. Пожалуйста, проверьте вопрос, просто добавили, как работает CloudFlare DNS. –