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

Как настроить mod_proxy на ProxyPass на основе http vs https?

У меня 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.