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

Запрещено после включения SSL

Недавно я использовал Certbot LetsEncrypt для включения SSL на моем сервере. Он работает под управлением Apache 2.4.18 с Django 1.11 в Ubuntu 16.04. Как объяснено Вот, Я продублировал свое определение VirtualHost: 80 для 443 в том же файле. Теперь я получаю 403 Forbidden всякий раз, когда пытаюсь получить доступ к своему сайту по HTTPS. Ниже приведен мой текущий файл конфигурации сайта, слегка анонимизированный:

WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess MyApp python-home=/home/Administrator/Documents/MyRepo/MyRepo_env python-path=/home/administrator/Documents/MyRepo/MyApp
WSGIProcessGroup MyApp

<VirtualHost *:80>
        ServerName myapp.com

        ServerAdmin wouldntyou@liketoknow.com
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        Alias /static /home/administrator/Documents/MyRepo/MyApp/static
        <Directory /home/administrator/Documents/MyRepo/MyApp/static>
                Require all granted
        </Directory>

        <Directory /home/administrator/Documents/MyRepo/MyApp/MyApp>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>

        WSGIScriptAlias / /home/administrator/Documents/MyRepo/MyApp/MyApp/wsgi.py

RewriteEngine on
RewriteCond %{SERVER_NAME} =myapp.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<VirtualHost *:443>
        ServerName myapp.com

        ServerAdmin wouldntyou@liketoknow.com
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        Alias /static /home/administrator/Documents/MyRepo/MyApp/static
        <Directory /home/administrator/Documents/MyRepo/MyApp/static>
                Require all granted
        </Directory>

        <Directory /home/administrator/Documents/MyRepo/MyApp/MyApp>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>

        <Directory /var/www/html>
                Require all granted
        </Directory>
        WSGIScriptAlias / /home/administrator/Documents/MyRepo/MyApp/MyApp.wsgi.py

SSLCertificateFile /etc/letsencrypt/live/myapp.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/myapp.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Единственное, что отображается в журнале Apache, это client denied by server configuration: /home/administrator/Documents/MyRepo/MyApp/MyApp.wsgi.py

Какие разрешения мне нужно изменить или какие настройки мне нужно изменить, чтобы он работал через SSL?

Что ж, это было неприятно. Проблема закончилась простой опечаткой во втором определении VirtualHost. В частности, WSGIScriptAlias ​​должен быть WSGIScriptAlias / /home/administrator/Documents/MyRepo/MyApp/MyApp/wsgi.py не WSGIScriptAlias / /home/administrator/Documents/MyRepo/MyApp/MyApp.wsgi.py. Единственная разница - это период, в котором должна была быть косая черта между финальными MyApp и wsgi.py. Надеюсь, кто-нибудь еще прочитает это и избавится от часов бессмысленной отладки.