Назад | Перейти на главную страницу

HTTPD proxypass ssl на http

По сути, у меня 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, поэтому я предполагаю здесь:

Лично я использую 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.