По сути, у меня httpd перенаправляет HTTP-запросы в определенное местоположение subdomain.domain.com/folder на Tomcat (http://localhost:8080/app/
). Это прекрасно работает с функциями ProxyPass и ProxyPassReverse. Однако при этом с https мой экземпляр Tomcat жалуется, что не знает, как работать с безопасным соединением. В основном я пытаюсь получить запросы, которые приходят https://subdomain.domain.com/folder будет расшифрован apache, а затем отправлен http://localhost:8080/app/
. Соответствующий виртуальный хост, который я настроил, следующий:
Надеюсь, это ясно. Если вам нужны дополнительные разъяснения, я могу их предоставить.
<VirtualHost *:443>
# General setup for the virtual host
DocumentRoot "/srv/www/docroot/"
ServerName subdomain.domain.com
#ServerAdmin webmaster@example.com
ErrorLog /var/log/apache2/mydomain-ssl-error_log
TransferLog /var/log/apache2/mydomain-ssl-access_log
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLCertificateFile /etc/apache2/certs/my-cert.crt
SSLCertificateKeyFile /etc/apache2/certs/my-key.key
SSLCertificateChainFile /etc/apache2/certs/DigiCertCA.crt
# Turn on proxy engine so urls can be forwarded
SSLProxyEngine on
# URLs to forward
<Location /folder>
ProxyPass http://localhost:8080/app/
ProxyPassReverse http://localhost:8080/app/
</Location>
# 4 possible values: All, SSLv2, SSLv3, TLSv1. Allow TLS only:
SSLProtocol all -SSLv2 -SSLv3\
Конфигурация Tomcat:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
keystoreFile="/usr/share/apache-tomcat-7.0.27/.keystore" keystorePass="Kurusawa701"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Вы не предоставляете сообщение об ошибке или описание Connection
настройка на стороне Tomcat, поэтому я предполагаю здесь:
balancer
подходитьЛично я использую AJP с Tomcat, потому что он лучше работает для моего мозга, или, может быть, у меня просто проблемы с настройками Java.
Полностью избавьтесь от второго коннектора Tomcat на порту 8443. Измените redirectPort в другом на 443. Избавьтесь от директивы SSLProxyEngine или отключите ее. В настоящее время вы можете (а) получать HTTPS в Tomcat, который вам не нужен, и (б) отправлять HTTPS из Apache из-за SSLProxyEngine, который вам также не нужен.
У вас возникнут большие проблемы с перенаправлением папки / в / app, потому что веб-приложения Tomcat будут генерировать внутренние URL-адреса, ссылающиеся на себя, начиная с / app. Существуют различные решения, такие как ProxyPassReverse и mod_proxy_http, но, на мой взгляд, лекарство хуже, чем болезнь. Сделайте их одинаковыми, например / app / app, то вы также можете избавиться от ProxyPassReverse. Постарайтесь сделать ваш Apache полностью прозрачным с точки зрения URL-адресов, что может означать корректировку имен веб-приложений Tomcat.