Виртуальный хост на основе SSL с django и mod_wsgi

У меня есть веб-приложение 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.

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

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

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

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

5
задан Community 23 May 2017 в 12:24
поделиться