Я использую директивы ProxyPass и ProxyPassReverse для перенаправления всех запросов из приложения Tomcat (с порта 8080) на субдомен (порт 80). Вдобавок у меня есть php-сайт по умолчанию на 80-м порту. Итак, конфигурация выглядит так:
<VirtualHost xx.xx.xx.xx:80 >
ServerName domain.com
DocumentRoot /var/www/site
</VirtualHost>
<VirtualHost xx.xx.xx.xx:80 >
ServerName sub.domain.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
Теперь мне нужно добавить поддержку SSL, поэтому я добавил в конфигурацию следующие строки:
NameVirtualHost *:443
<VirtualHost _default_:443>
SSLEngine on
SSLCertificateFile /usr/local/ssl/crt/public.crt
SSLCertificateKeyFile /usr/local/ssl/private/private.key
SSLCACertificateFile /usr/local/ssl/crt/intermediate.crt
ServerName domain.com:443
DocumentRoot /var/www/site
</VirtualHost>
Но проблема в том, что https отлично работает только на корневом сайте, но когда я пытаюсь получить субдомены через https, он перенаправляет меня на несуществующую страницу ... Как я могу настроить apache, чтобы реализовать это?
Спасибо
Вы не добавили SSL (порт 443) virtualHost для sub.domain.com, например.
<VirtualHost _default_:443>
ServerName sub.domain.com
SSLEngine On
SSLCertificateFile /usr/local/ssl/crt/public.crt
SSLCertificateKeyFile /usr/local/ssl/private/private.key
SSLCACertificateFile /usr/local/ssl/crt/intermediate.crt
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# Needed if you want to go to preserve the SSL connection all the way to tomcat,
# but not worth it as both daemons are on the same physical box.
#SSLProxyEngine On
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>