Назад | Перейти на главную страницу

Перепишите URL-адреса с помощью Apache (для использования в сочетании с mod_proxy)

я использую 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, но разве в нем нет возможности использовать только относительные пути?