скрыть URL от конечного пользователя во время proxyPass / reverseProxyPass - PullRequest
0 голосов
/ 11 июля 2019

У меня есть два сервера, которые находятся на разных машинах. У нас есть DNS-данные для нашей сети:

  • dev.server.com
  • prod.server.com

Все наши приложения размещены на prod.server.com, но моя команда написала новое приложение на версии языка, который еще не доступен на prod. Чтобы пользователи могли использовать его, я бы хотел, чтобы пользователи находились в среде prod со ссылкой на это новое приложение, но с точки зрения пользователя я не хочу, чтобы они видели, как они перенаправляются на dev.server. .com, я хочу, чтобы их адресная строка оставалась прежней. Когда они нажимают на ссылку, чтобы перейти к prod.server.com/new_application, я хочу, чтобы в их адресной строке было написано prod.server.com/new_application, но я хочу, чтобы она load dev.server.com/new_application

После прочтения в течение нескольких часов, кажется, точный способ сделать это - через ProxyPass и ReverseProxyPass.

В моем apache я убедился, что эти два модуля загружаются:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Затем, в дальнейшем, я делаю следующее:

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

#### Proxy Stuff
#ProxyRequests On
ProxyPass /new_application/ http://dev.server.com/new_application/
ProxyPassReverse /new_application/ http://dev.server.com/new_application/

Когда я нажимаю <a href="/new_application/">Click here</a>, размещенный в prod.server.com, страница в dev.server.com/new_application загружается - поэтому половина моей проблемы работает правильно - но я не могу понять, как получить эту шкуру от пользователя и оставьте prod.server.com/new_application то, что они видят в своей адресной строке.

1 Ответ

1 голос
/ 11 июля 2019

Попробуйте: ProxyPassReverse / new_application / http://prod.server.com/new_application/

Но учтите, что это только «корректирует» URL в части заголовка http диалога.Он не исправляет никаких «полных» URL-адресов в контенте, полученном от «prod».(Изменить) См. https://httpd.apache.org/docs/2.4/mod/mod_proxy_html.html, если вам нужно более детально редактировать ссылки в контенте.

Вам не нужен блок <Proxy *> ... </Proxy> - на самом деле, вы, вероятно, не хотите его ...то есть для включения forward-proxy.Используйте ProxyRequests Off для защиты вашего сервера от использования в качестве прямого прокси.

Это довольно плотное чтение, но http://httpd.apache.org/docs/2.4/mod/mod_proxy.html должно помочь.

...