Я пытаюсь переписать все запросы для моего сервера 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