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

我正在使用Apachemod_proxy通过HTTP提供对Monit GUI的访问。 到目前为止,我的configuration如下:

  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返回的链接有一个绝对path,它打破了仅适用于以/monit开头的path的代理。 我可以为http://monit.mywebsite (例如http://monit.mywebsite )创build一个单独的vhost来解决这个问题,但是想知道是否有另一个解决scheme。

问题1:有没有办法让Apache重写HTML代码中的链接,以便在ProxyPassProxyPassReverse指令中定义任何path?

问题2:如果上述不可能,你会看到另一个解决scheme,而不是我提到的单独的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可以做你想做的事情,但据我所知这绝不是最好的解决scheme….我不知道Monit,但没有一个选项,使它只使用相对path?