我有一个apache2 Web服务器,可以处理在另一台机器上运行的Rails3应用程序的反向代理。
安装工作正常,除了在webapp中生成的URL不会被我的mod_proxy_html配置重写。
"Reverse Proxy Scenario"正是我想要做的,所以我完全按照我所知的方式完成了教程。
我已经应用或尝试了两个提供here的答案,并在此处进行了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)。
现在正在使用的是通过反向代理访问webapp:
http://www.ourdomain.org/apphost/railsappname/controllername/action
但是没有javascript文件,css文件或其他资源被加载,并且Web应用程序内部的链接出现了URL的apphost部分,好像我的重写规则配置不正确(所以我当然是专注于这一点,似乎无法在从apphost传递html并通过Apache服务器传递任何东西来添加或删除。
这是我的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服务器后,我尝试的任何内容似乎都没有改变我在浏览器中看到的URL。
即使你不知道我做错了什么,我也欢迎有关如何让Apache帮助了解它正在做什么以及对来自我的网络应用程序的html做什么的想法。这就是我所理解的ProxyHTMLLogVerbose On和LogLevel Debug的设置,但是我没有在日志文件中看到任何内容。