Я изо всех сил пытаюсь заставить свой обратный прокси-сервер работать должным образом ... Мой экземпляр Apache должен работать как обратный прокси для сервера внутренних приложений, как указано в директивах proxypass / proxyreverse ниже.
Желаемое поведение: запросы клиентов https: // my_website / context_path
. Этот запрос должен быть перенаправлен на http: // my_backend / context_path / loginServlet
Все остальные запросы должны быть переданы через обратный прокси на внутренний сервер.
RewriteEngine on
RewriteCond "%{REQUEST_URI}" "https://my_website/context_path"
RewriteRule ^/my_website$ http://my_backend/context_path/loginServlet$1
ProxyPass /my_website/ http://my_backend/context_path/
ProxyPassReverse /my_website/ http://my_backend/context_path/
Любая помощь приветствуется. Заранее большое спасибо.
Ммм .. Вы уверены, что хотите перенаправить все логины на обычную HTTP-страницу, обслуживаемую непосредственно вашим сервером? Доступен ли ваш внутренний сервер извне? Если действительно так, то это возможно:
<VirtualHost *:443>
ServerName my_website.example.com
...
RedirectMatch "^/context_path$" "http://my_backend.example.com/context_path/loginServlet"
ProxyPass /context_path/ http://my_backend.example.com/context_path/
ProxyPassReverse /context_path/ http://my_backend.example.com/context_path/
</VirtualHost>
Но я думаю, что вы действительно пытаетесь добиться этого; перенаправление на ваш прокси вместо бэкэнда:
<VirtualHost *:443>
ServerName my_website.example.com
...
RedirectMatch "^/context_path$" "/context_path/loginServlet"
ProxyPass /context_path/ http://my_backend.example.com/context_path/
ProxyPassReverse /context_path/ http://my_backend.example.com/context_path/
</VirtualHost>
Обратите внимание, что я использовал RedirectMatch
из mod_alias вместо RewriteRule
из mod_proxy, потому что этого достаточно для такого простого внешнего перенаправления и может быть также легче понять.