正确配置 mod_proxy_html 吗?

正确配置 mod_proxy_html 吗?

我有一个 apache2 网络服务器,用于处理在另一台机器上运行的 Rails3 应用程序的反向代理。

设置成功,只是 webapp 中生成的 URL 不会被我的 mod_proxy_html 配置重写。

“反向代理场景”正是我想做的事情,因此我已尽我所能完全遵循了本教程。

我已经应用或尝试了提供的答案这里在 stackoverflow 上,没有效果。

根据“反向代理方案”,您需要加载多个模块。所有这些说明都在我的 httpd.conf 文件中,当我检查

apactectl -t -D DUMP_MODULES

所有预期的模块都显示在列表中。

我执行反向代理的外部Web服务器位于www.ourdomain.org,Rails应用程序在apphost.local内部可用(服务器是Mac OS X Server 10.6,rails应用服务器是Mac OS X 10.6)。

现在正在进行的是通过反向代理访问 Web 应用程序:

http://www.ourdomain.org/apphost/railsappname/controllername/action 

但是没有任何 javascript 文件、css 文件或其他资产被加载,并且 Web 应用程序内部的链接缺少 URL 的 apphost 部分,就好像我的重写规则配置不正确一样(所以我当然关注这一点,并且似乎无法在将 html 从 apphost 传入并通过 Apache 服务器传出的过程中添加或删除任何内容)。

例如,将鼠标悬停在 Web 应用程序返回的 html 中的操作链接上,您将获得:

http://www.ourdomain.org/railsappname/controllername/action

以下是我的 Apache 指令:

LoadModule proxy_html_module /usr/libexec/apache2/mod_proxy_html.so
LoadModule xml2enc_module /usr/libexec/apache2/mod_xml2enc.so
    ProxyHTMLLogVerbose On
    LogLevel Debug
    ProxyPass /apphost/  http://apphost.local/
    <Location /apphost/>
            SetOutputFilter INFLATE;proxy-html;DEFLATE
            ProxyPassReverse /
            ProxyHTMLExtended On
            ProxyHTMLURLMap railsappname/ apphost/railsappname/
            RequestHeader unset Accept-Encoding
    </Location>

每次对 httpd.conf 进行更改后,我都会虔诚地检查 apachectl -t,以确保正确性。

我绝对不是 Apache 专家,但我后面的所有指令似乎都无法推翻我在这里所做的。但是,当我向 Apache 服务器发送针对我的 Web 应用的请求后,我尝试的所有方法似乎都无法改变我在浏览器中看到的 URL。

即使您不知道我做错了什么,我也欢迎您提出一些想法,让 Apache 帮助查看它正在处理什么以及对来自我的 Web 应用程序的 html 做了什么。这就是我理解的 ProxyHTMLLogVerbose On 和 LogLevel Debug 的设置,但我在日志文件中看不到任何东西。

答案1

也许答案有点简单,但到目前为止,我见过的大多数(如果不是全部)ProxyHTMLURLMap指令在匹配/替换模式的开头都有一个/。您是否尝试过这种配置变体?

ProxyHTMLURLMap /railsappname/ /apphost/railsappname/

如果这没有帮助,您正在运行哪个版本的 apache?如果适用,哪个版本的模块?它自 apache 2.4 开始才与 apache 捆绑在一起,因此对于旧版本的 apache,您必须自己安装(某个版本的)此模块。

另外,您也可以切换到 mod_substitute,尽管它需要比 mod_proxy_html 更多的配置。

在某些时候,他们删除了一些内置配置,这需要您自己添加。请参阅http://apache.webthing.com/svn/apache/filters/proxy_html/proxy_html.conf,ProxyHTMLLinks 和 ProxyHTMLEvents 指令是您需要添加到配置中的指令。

相关内容