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


У меня Apache Tomcat работает с включенным SSL. У меня есть HTTP-сервер Apache, действующий как обратный прокси-сервер, так что, если пользователи Http: // MyServer / кот / они передаются Http: // MyServer: 8080,

ProxyPass /tomcat/ http://myserver:8080/
ProxyPassReverse /tomcat/ http://myserver:8080/

У меня есть HTTP-сервер Apache, настроенный для SSL, а также, когда пользователи https: // MyServer / кот / они должны быть переданы https: // MyServer: 8443 /,

С текущей конфигурацией ProxyPass & ProxyPassReverse они будут перенаправлены на URL-адрес, отличный от ssl. Как настроить прокси-проход, чтобы он перенаправлял на другой протокол и порт на основе входящего запроса?

То есть, если кто-то приходит через HTTPS, как я могу перенаправить их на мой tomcat @ https: // MyServer: 8443?


Обновить:

@ Микрофон-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 / кот / Я получаю «страница не найдена». В журнале ошибок я вижу «Файл не существует: / var / apache2 / htdocs / tomcat»

Это правильно, но я ожидал, что запрос будет перенаправлен на tomcat, работающий на https: // MyServer: 8443 /,

Полагаю, мне нужно больше смотреть на виртуальные хосты, если что-то не выглядит явно ошибочным.


8
2017-07-19 15:36


Источник


Я не думаю, что вам нужно NameVirtualHost директива здесь. Кроме того, вам нужно будет добавить соответствующие директивы для включения SSL внутри вашего <VirtualHost *:443> раздел. - Mike Insch


Ответы:


Вам нужно сделать это через два независимых <VirtualHost *:X> директивы. Ваш HTTP директивы входят внутрь <VirtualHost *:80> в то время как HTTPS директивы входят внутрь <VirtualHost *:443>, При необходимости отрегулируйте, если на вашем сервере настроено несколько виртуальных хостов на основе адреса или имени. Подробную информацию см. В документации Apache 2.


4
2017-07-19 15:42



Поэтому я добавил следующее: NameVirtualHost *: 443 - codecraig
Не забудьте добавить SSLProxyEngine в директиву - Ryan


Для полноты: если это вариант, рекомендуется прекратить использование 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>

5
2017-12-04 11:42



Если вы это сделаете, вам не нужно будет повторять директивы прокси-сервера в обоих VirtualHost. Вы можете просто вытащить их из контекста сервера. - Amit Naidu