У меня Apache Tomcat работает с включенным SSL. У меня есть HTTP-сервер Apache, действующий как обратный прокси, поэтому мои пользователи http: // мойсервер / tomcat / они передаются http: // мойсервер: 8080.
ProxyPass /tomcat/ http://myserver:8080/
ProxyPassReverse /tomcat/ http://myserver:8080/
У меня также настроен HTTP-сервер Apache для SSL, поэтому, когда пользователи нажимают https: // myserver / tomcat / они должны быть переданы https: // myserver: 8443 /.
С текущей конфигурацией ProxyPass и ProxyPassReverse они будут перенаправлены на URL-адрес, отличный от ssl. Как настроить прокси-прокси так, чтобы он перенаправлялся на другой протокол и порт в зависимости от входящего запроса?
То есть, если кто-то заходит через HTTPS, как я могу перенаправить их на мой tomcat @ https: // myserver: 8443?
Обновить:
@ mike-insch
Я попытался:
NameVirtualHost *:443
<VirtualHost *:80>
ProxyPass /tomcat/ http://myserver:8080/
ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>
<VirtualHost *:443>
ProxyPass /tomcat/ https://myserver:8443/
ProxyPassReverse /tomcat/ https://myserver:8443/
</VirtualHost>
Теперь, когда я в гостях: https: // myserver / tomcat / Я получаю «страница не найдена». В журнале ошибок я вижу «Файл не существует: / var / apache2 / htdocs / tomcat»
Это правильно, но я ожидал, что запрос будет перенаправлен на tomcat, работающий на https: // myserver: 8443 /.
Думаю, мне нужно больше взглянуть на виртуальные хосты, если что-то не выглядит явно неправильным.
Для полноты: если это вариант, рекомендуется отключить SSL на Apache, а не через Tomcat. Если Tomcat доступен только из Apache, это проще и не менее безопасно.
В этой настройке Apache будет проксировать HTTP и HTTPS для http://myserver:8080/
:
NameVirtualHost *:443
<VirtualHost *:80>
ProxyPass /tomcat/ http://myserver:8080/
ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>
<VirtualHost *:443>
ProxyPass /tomcat/ http://myserver:8080/
ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>
Сделать это нужно через два независимых <VirtualHost *:X>
директивы. Ваш HTTP
директивы входят в <VirtualHost *:80>
пока твой HTTPS
директивы входят в <VirtualHost *:443>
. При необходимости отрегулируйте, если на вашем сервере настроено несколько виртуальных хостов на основе адреса или имени. См. Полную информацию в документации Apache 2.