Обратный прокси-сервер apache с proxypreservehost on приводит к 404

Я надеюсь, что кто-то, имеющий опыт работы с Apache, может мне помочь. У меня есть внутренний сервер, на который я обращаюсь с Apache Reverse Proxy. т.е.

Настройки Apache

<Proxy *>
        Order allow,deny
        Allow from all
</Proxy>

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]

ProxyVia Off
ProxyRequests Off
ProxyPreserveHost On

SSLProxyEngine On
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerExpire Off
SSLProxyCheckPeerName Off
SSLProxyVerify none

ProxyPass               /internal   https://www.myinternalserver.com
ProxyPassReverse        /internal https://www.myinternalserver.com

<Location />
        Allow from all
#       Require all granted
</Location>

Проблема, с которой я столкнулся, такова:

  • Внутреннее приложение в коде использует getRequest().getServerName() для получения URL. Если я выключу ProxyPreserveHost и установлю для него значение Off, тогда внутреннее приложение окажется возвращаемым URL-адресом. Это не то, что я хочу, поскольку этот внутренний URL-адрес приложения недоступен для публики.
  • Из того, что я читал, ProxyPreserveHost должен быть On, чтобы Apache Reverse Proxy мог передавать свой URL-адрес базовым внутренним приложениям. Однако когда я это делаю, я получаю 404. Я понимаю, что, вероятно, происходит то, что внутренний сервер использует внешний домен для поиска своего приложения и, следовательно, не может его найти. Я не знаю, как это обойти. Кстати, внутреннее приложение размещено на PCF.

Я был бы признателен, если бы кто-нибудь мог мне помочь.

Спасибо!

Привет, Кабир! У меня почти такая же проблема (получение 404 при включенном ProxyPreserveHost). Вы нашли решение?

Ben 15.12.2018 20:54
1
1
1 207
0

Другие вопросы по теме