У меня есть веб-приложение django, в котором некоторые URL-адреса разрешены для доступа через http, а другие должны быть защищены только через http. Мне нужно настроить конфигурацию virtualHost/mod_wsgi в моем файле конфигурации apache, чтобы к одному и тому же веб-приложению можно было получить доступ через оба. Я следил за этими двумя сообщениями
и имеют следующую конфигурацию, которая, я думаю, должна помочь.
NameVirtualHost *:80
ServerAdmin me@mail.com
DocumentRoot /var/www/html
ServerName www.mydomain.com
ErrorLog server-logs/error_log
CustomLog server-logs/access_log common
WSGIScriptAlias /test /var/www/my_app_root/apache/django.wsgi
Order allow,deny
Allow from all
NameVirtualHost *:443
SSLEngine On
SSLCertificateFile /etc/httpd/conf/ssl/mykey.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/mykey.key
ServerAdmin me@mail.com
DocumentRoot /var/www/html
ServerName www.mydomain.com
ErrorLog server-logs/error_log
CustomLog server-logs/access_log common
WSGIScriptAlias /test /var/www/my_app_root/apache/django.wsgi
Order allow,deny
Allow from all
Тем не менее, URL-адреса, которые должны быть доступны через http, доступны без каких-либо проблем, в то время как те, которые должны быть доступны через https, получают ошибку 404 - не найдено. У меня есть декоратор, который видит, осуществляется ли доступ к представлению через http, а затем перенаправляет на URL-адрес с заменой http на https. Таким образом, сопоставление URL-адресов верно, так как я вижу, что происходит перенаправление (это означает, что представление вызывается), но через https возникает ошибка 404.
У меня есть стороннее php-приложение в корне документа веб-сервера /var/www/html/
, которое отлично работает через https. Каким-то образом это приложение не сталкивается с какими-либо проблемами с http или https.
Я пробовал следующее
WSGIProcessGroup
на обоих виртуальных хостах, но это тоже не сработало.Редактировать:
Благодаря всем вашим комментариям, я немного больше изучил конфигурации и обнаружил, что существует файл sub conf, который загружался во время выполнения и определял виртуальный хост *:443 (и делал не имеют директивы wsgiscript). Вот почему Listen 443
выдавал ошибку. И это также объясняет 404 для URL-адреса через https (обработка виртуального хоста *: 443 не смогла разрешить этот URL-адрес). Теперь я изменил его, и все работает нормально. Подходы, предложенные в двух сообщениях о переполнении стека в моем исходном вопросе, идеальны и работают правильно.