я использую Apache
и mod_proxy
предоставить доступ к Monit
GUI через HTTP. Пока что моя конфигурация выглядит следующим образом:
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost on
ProxyPass /monit http://localhost:2812/
ProxyPassReverse /monit http://localhost:2812/
Когда люди идут в http://mywebsite/monit
они получают домашнюю страницу Monit. Однако ссылки, возвращаемые Monit, имеют абсолютный путь, что нарушает прокси, который применяется только к путям, начинающимся с /monit
. Я мог бы создать отдельный vhost
Просто для Monit
(например. http://monit.mywebsite
), который решит проблему, но мне было интересно, есть ли другое решение.
Q1: Есть ли способ заставить Apache переписывать ссылки в HTML-коде, чтобы добавить путь, определенный в ProxyPass
и ProxyPassReverse
директива?
Q2: Если это невозможно, видите ли вы другое решение, кроме отдельного vhost
Я упомянул?
Ваш прокси-сервер настроен немного неправильно:
так должно быть:
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost on
ProxyPass /monit http://localhost:2812
ProxyPassReverse /monit http://localhost:2812
заметили разницу? В вашей настройке вы удалите / для многих.
вы также можете пойти на
ProxyPass /monit/ http://localhost:2812/
ProxyPassReverse/ /monit http://localhost:2812/
но затем просит http://mywebsite/monit
не будет работать, только чтобы http://mywebsite/monit/
что было бы неудобно.
Наверное mod_proxy_html мог бы делать то, что вы хотите, но насколько я знаю, это никогда не лучшее решение ... Я не знаю Monit, но разве в нем нет возможности использовать только относительные пути?