Недавно я использовал 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
. Надеюсь, кто-нибудь еще прочитает это и избавится от часов бессмысленной отладки.