Добрый день, уважаемые!
Требуется комментарий человека, хорошо понимающего механизм работы Apache
Задача в следующем. Есть wsgi-приложение на питоне, работающее на домене domain1.com. Требуется создать ссылку на это приложение, чтобы оно работало ещё и на домене domain2.com. Проблема в том, что в один контейнер VirtualHost не вставить два сертификата, и ServerAlias оказывается здесь не при делах. Если создать такой конфиг:
<VirtualHost 1.2.3.4:443>
ServerName domain1.com
ServerAlias domain2.com
WSGIDaemonProcess approc user=www-data group=www-data threads=15 processes=10 shutdown-timeout=30B
WSGIScriptAlias / /home/www/web/appl.new/appl.wsgi
WSGICallableObject app
WSGIScriptReloading On
<Directory /home/www/web/appl.new>
WSGIProcessGroup approc
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/domain1.crt
SSLCertificateKeyFile /etc/ssl/private/domain1.key
</VirtualHost>
то при входе на
https://domain1.com всё нормально, а если
https://domain2.com - браузер пищит о недостоверном сертификате. Ну, что напрашивается: создать 2 контейнера. Если сделать так:
<VirtualHost 1.2.3.4:443>
ServerName domain1.com
WSGIDaemonProcess approc user=www-data group=www-data threads=15 processes=10 shutdown-timeout=30B
WSGIScriptAlias / /home/www/web/appl.new/appl.wsgi
WSGICallableObject app
WSGIScriptReloading On
<Directory /home/www/web/appl.new>
WSGIProcessGroup approc
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/domain1.crt
SSLCertificateKeyFile /etc/ssl/private/domain1.key
</VirtualHost>
<VirtualHost 1.2.3.4:443>
ServerName domain2.com
WSGIDaemonProcess approc2 user=www-data group=www-data threads=15 processes=10 shutdown-timeout=30B
WSGIScriptAlias / /home/www/web/appl.new/appl.wsgi
WSGICallableObject app
WSGIScriptReloading On
<Directory /home/www/web/appl.new>
WSGIProcessGroup approc2
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/domain2.crt
SSLCertificateKeyFile /etc/ssl/private/domain2.key
</VirtualHost>
то всё работает. Но возникают вопросы:
1. Единственное ли это решение?
2. Нет ли подводных камней? Первое, что приходит в голову: например, при изменении исходников приложение рестартует и перекомпилирует py-файлы. При значительной посещаемости, не случится ли какой-нибудь конфликт, если оба процесса попытаются одновременно рекомпилировать один и тот же файл и сохранить его на диск?
3. Ну и вообще, ощущение такое, будто не по феншую...