Вопрос по apache, https – Виртуальный хост на основе SSL с django и mod_wsgi

5

У меня есть веб-приложение django, в котором разрешен доступ к некоторым URL-адресам через http, а для других - только через http-secure. Мне нужно настроить конфигурацию virtualHost / mod_wsgi в моем файле apache conf, чтобы к одному и тому же веб-приложению можно было получить доступ через оба. Я следовал за этими 2 сообщениями

Как заставить использовать SSL для некоторых URL моего приложения Django? Django и SSL вопрос

и иметь следующую конфигурацию, которая, я думаю, должна сработать.

<code>NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin [email protected]
    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

    <Directory /var/www/my_app_root>
      Order allow,deny
      Allow from all
    </Directory>    
</VirtualHost>

NameVirtualHost *:443
<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile /etc/httpd/conf/ssl/mykey.crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl/mykey.key

    ServerAdmin [email protected]
    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

    <Directory /var/www/my_app_root>
      Order allow,deny
      Allow from all
    </Directory>
</VirtualHost>
</code>

Однако URL-адреса, к которым необходимо получить доступ через http, доступны без каких-либо проблем, в то время как те, которые должны быть через https, получают ошибку 404 - not found. У меня есть декоратор, который видит, осуществляется ли доступ к представлению через http, а затем перенаправляет на URL-адрес с заменой http на https. Таким образом, отображение URL корректно, так как я вижу, что происходит перенаправление (это означает, что представление вызывается), но через https он получает ошибку 404.

У меня есть стороннее php-приложение в корне документа веб-сервера/var/www/html/ который отлично работает по https. Каким-то образом это приложение не сталкивается с какой-либо проблемой, связанной с http или http

Я попробовал следующее

Пробовал подход в режиме демона с тем жеWSGIProcessGroup name в обоих виртуальных хостах, но это тоже не сработало. Я попытался добавить команду Listen 443, и apache пожаловался на ошибку, связанную с портом.

Редактировать

Из-за всех ваших комментариев я немного больше изучил конфигурации и обнаружил, что во время выполнения был загружен файл sub conf, определяющий виртуальный хост *: 443 (и не имевший директивы wsgiscript). Вот почеListen 443 выдавал ошибку. И это также объясняет 404 для URL через https (обработка виртуального хоста *: 443 не смогла разрешить этот URL). Сейчас я его модифицировал и все работает нормально. Подходы, предложенные в двух сообщениях о переполнении стека в моем первоначальном вопросе, идеальны и работают правильно.

Есть ли у вас запрос через HTTPS в журналах сервера? Получаете ли вы 404 Django или ошибку от Apache? Какое программное обеспечение использует порт 443 (вы можете проверить с помощьюnetstat)? ilvar
Что в журнале доступа Apache говорится, что перенаправленный URL пытается получить доступ? Поскольку вы монтируете по дополнительному URL-адресу, если вы не используете правильный способ построения перенаправления, он может не перенаправить обратно относительно точки монтирования. Итак, отправьте записи из журнала доступа Apache, чтобы подтвердить, какие URL запрашиваются, и посмотреть, какие коды ответов HTTP для них есть в журнале доступа. Graham Dumpleton

Ваш Ответ

1   ответ
4

и «Listen 443», упомянутые в вашем apache2.conf?Эт может помочь.

Похожие вопросы