使用 Apache 重写 URL(与 mod_proxy 结合使用)

使用 Apache 重写 URL(与 mod_proxy 结合使用)

我正在使用Apachemod_proxy提供对Monit图形用户界面通过 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。我可以创建一个单独的vhostjust for Monit(例如http://monit.mywebsite)来解决这个问题,但我想知道是否还有其他解决方案。

问题 1:有没有办法让 Apache 重写 HTML 代码中的链接,以将ProxyPassandProxyPassReverse指令中定义的路径添加到前面?

Q2:如果上述方法不可行,除了vhost我**提到的单独方法之外,您是否还有其他解决方案?

答案1

编辑

您的代理设置略有不正确:

它应该是:

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,但其中没有一个选项可以让它只使用相对路径吗?

相关内容