我正在使用Apache
并mod_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
。我可以创建一个单独的vhost
just for Monit
(例如http://monit.mywebsite
)来解决这个问题,但我想知道是否还有其他解决方案。
问题 1:有没有办法让 Apache 重写 HTML 代码中的链接,以将ProxyPass
andProxyPassReverse
指令中定义的路径添加到前面?
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,但其中没有一个选项可以让它只使用相对路径吗?