Добро пожаловать в переполнение стека. Я делаю это, создавая два .conf
файла и избегая перезаписи httpd.conf
. Сначала файл ssl.conf
:
SSLCertificateFile /etc/ssl/certs/ssl-c.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-c.key
SSLCertificateChainFile /etc/ssl/private/InCommonRSAServerCA_2.pem
SSLCipherSuite TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:HIGH:!aNULL:!MD5
SSLHonorCipherOrder on
SSLCompression off
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
Listen 443
Это отключит небезопасные, старые протоколы и потребует TLS 1.2 +.
Затем я создаю файл для каждого сайта, размещаемого на сервере, как VirtualHost
, например, mysite.conf
:
<VirtualHost my-site.example.com:80>
ServerName my-site.example.com
ServerAlias www.my-site.example.com
Redirect permanent / https://my-site.example.com/
</VirtualHost>
<VirtualHost *:443>
TimeOut 600
SSLEngine On
ServerName my-site.example.com
ServerAlias www.my-site.example.com
# Set to the lobal Application Group
WSGIApplicationGroup %{GLOBAL}
# Pass Authorizations through to the WSGI app for Django REST Framework Token Auth
WSGIPassAuthorization On
WSGIDaemonProcess my-site-https python-home=/var/django/my-site/sites/my-site/venv request-timeout=600 user=apache group=apache processes=1
WSGIProcessGroup my-site-https
WSGIScriptAlias / /var/django/my-site/sites/my-site/config/wsgi.py process-group=my-site-https
<Directory /var/django/my-site/sites/my-site/config>
Require all granted
</Directory>
Alias /static/ /var/django/my-site/sites/my-site/static/
<Directory /var/django/my-site/sites/my-site/static>
Require all granted
</Directory>
</VirtualHost>
Здесь есть несколько дополнительных вещей. Во-первых, WSGIPassAuthorization
включается, если вы используете аутентификацию токена Django REST Framework. Вам это может не понадобиться.
WSGIDaemonProcess
содержит несколько явных настроек, которые вы можете изменить или не требовать, например, user
, group
и processes
. Это позволяет вам настраивать, для какого пользователя и группы запускается процесс Apache Linux для этого VirtualHost
, а processes
контролирует, сколько процессов иметь.
Две директивы Directory
необходимы для обеспечения доступа к файлу конфигурации .wsgi
вашего проекта Django и вашим статическим файлам.
Удачи! Это сложно настроить, но как только вы поймете это правильно, mod_wsgi
будет надежным.