Перезапись URL в выводе tomcat html - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь настроить внешний интерфейс Apache с другим URL-адресом для внутреннего приложения tomcat.В качестве примера я использую приложение менеджера tomcat.

Я бы хотел, чтобы пользователи обращались к моей странице как снаружи: https://myhost.com/tomcat-manager

Внутренне оно перенаправляется на http://localhost:8080/manager

* 1008.* Я попробовал следующую конфигурацию в apache2 с mod_proxy и mod_rewrite:
  RewriteEngine on
  SSLProxyEngine on

  RewriteRule "/manager/(.*)$" https://myhost.com/tomcat-manager/$1 [P]
  ProxyPass /tomcat-manager http://localhost:8080/manager
  ProxyPassReverse /tomcat-manager http://localhost:8080/manager

В основном это работает, но мне не нравится, что веб-приложение менеджера tomcat выводит свои ссылки как "/ manager" вместо "/ tomcat-manager", заставляя меня добавить вышеупомянутое правило mod_rewrite.В идеале, я бы хотел, чтобы конечный пользователь видел только URL-адреса браузера с шаблоном:

https://myhost.com/tomcat-manager/(whatever)

и никогда следующее:

https://myhost.com/manager/(whatever)

Есть предложения по настройке Apache без изменения основного веб-приложения?Спасибо!

1 Ответ

0 голосов
/ 16 октября 2018

Я нашел ответ на свой вопрос.Это Apache mod_proxy_html.Я включил соответствующие модули и исправил отсутствующую конфигурацию mod_proxy_html в Ubuntu, как указано здесь: https://serverfault.com/questions/684905/proxyhtmlurlmap-not-working-in-apache2-4

Затем я добавил следующий код конфигурации:

ProxyHTMLEnable On
ProxyHTMLURLMap http://localhost:8080/manager/ /tomcat-manager/
ProxyHTMLURLMap /manager/ /tomcat-manager/
SetOutputFilter proxy-html
RequestHeader      unset  Accept-Encoding

И это все.Теперь я могу получить доступ к http://myhost.com/tomcat-manager, а HTML-код внутри также переписан!

...