Назад | Перейти на главную страницу

Django, работающий на Apache + WSGI и проксирование SSL в apache

Я пытаюсь переписать все запросы для моего сервера Django, работающего на apache + WSGI (внутри моей локальной сети) и настроенного как wiki WSGI как это сделать, за исключением того, что я установил для него виртуальный хост.

Сервер, с которого я хочу переписать запросы, - это еще один сервер apache, прослушивающий порт 80. Я смогу заставить его работать хорошо, если я не буду пытаться включить SSL-соединение в качестве необходимого способа подключения. Но мне нужны все запросы к серверу Django, зашифрованные с помощью SSL, поэтому я обычно использовал эту директиву для достижения этого (на моем общедоступном веб-сервере):

    Alias /dirname "/var/www/dirname"
    

        SSLVerifyClient      none
        SSLOptions           +FakeBasicAuth
        SSLRequireSSL
        AuthName             "stuff name"
        AuthType             Basic
        AuthUserFile         /etc/httpd/djangoserver.passwd
        require              valid-user

        # redirect all request to django.test:80 
        RewriteEngine On
        RewriteRule   (.*)$  http://django.test/$1 [P]
    

Эта конфигурация работает, если я пытаюсь загрузить определенную страницу через внешний сервер из моего браузера. Он не работает, щелкая URL-адреса моих приложений django (даже если URL-адрес кажется правильным, когда я нахожу указатель мыши).

URL-адрес, который мой общедоступный сервер пытается обслуживать, использует http (вместо https), а каталог «dirname», который я указал в моей конфигурации apache, исчезает, поэтому он говорит, что страница не найдена. Я думаю, это зависит от Django и его обработчика WSGI. Кто-нибудь сталкивался с моей проблемой?

PS: Я уже пробовал модифицировать сценарий WSGI. Я использую Django 1.0.3, Apache 2.2 на Fedora10 (внутри), Apache 2.2 на общедоступном сервере.

Заранее спасибо за вашу помощь.

Fab

Мое решение благодаря Грэму:

<Location /dirname>
    SSLVerifyClient      none
    SSLOptions           +FakeBasicAuth
    SSLRequireSSL
    AuthName             "name Authentication"
    AuthType             Basic
    AuthUserFile         /etc/httpd/stuff.passwd
    require              valid-user

    RequestHeader set X-Url-Scheme https


</Location>

ProxyPass /dirname http://django.test/dirname
ProxyPassReverse /dirname http://django.test/dirname

В django.test я добавил это:

 SetEnvIf X-Url-Scheme https HTTPS=1 

после

  WSGIScriptAlias /dirname /path_to_wsgi_script/django.wsgi