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

Обратный прокси-сервер Apache с https на http

У меня есть доступный в Интернете сервер apache, на котором включен и работает SSL. В локальной сети есть еще один сервер, который предоставляет приложение tomcat через http.

Сервер Apache выполняет обратные прокси-серверы для приложения Tomcat. Когда сервер apache используется через http, приложение tomcat правильно проксируется, но при его использовании через https сервер tomcat возвращает ресурс 404, который не найден. Значит, запрос https не переведен на http? Я бы предпочел сделать это, не касаясь конфигурации tomcat, поскольку это не моя область.

Это мой конфиг:

<VirtualHost *:443>
        ServerName ext-service.example.com
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl.crt/mycert.crt
        SSLCertificateKeyFile /etc/apache2/ssl.key/mykey.key
        SSLCertificateChainFile /etc/apache2/ssl.crt/mybundle.crt
        ProxyRequests Off
        ProxyPreserveHost Off
        <Proxy *>
          AddDefaultCharset off
          Order deny,allow
          Allow from all
        </Proxy>
        DocumentRoot /srv/www/empty/
        ProxyPass / http://int-service.example.com/
        ProxyPassReverse / http://int-service.example.com/
</VirtualHost>

Если tomcat настроен на использование AJP, я предлагаю вам использовать это.

ProxyPass / ajp://int-service.example.com:<ajp_port>/  
ProxyPassReverse / ajp://int-service.example.com:<ajp_port>/

Вам придется адаптировать конфигурацию tomcat, обойти это невозможно. Ваша конфигурация apache пока выглядит нормально, только две вещи, которые не работают, когда я сравниваю ее с моей настройкой:

  • DocumentRoot там бесполезен, вы можете удалить его, так как вы все проксируете.
  • ProxyPreserveHost должно быть On

С другой стороны, Tomcat нужно сообщить, что перед ним прокси-сервер и что он использует https вместо http.

Должен быть файл конфигурации, в котором указан коннектор.

<Connector port="80"

   <!-- add these lines -->
   scheme="https"
   proxyName="ext-service.example.com"
   proxyPort="443"

   <!-- other options -->
/>

После добавления этих строк Tomcat знает, как должны создаваться URL-адреса.