正確配置 mod_proxy_html 嗎?

正確配置 mod_proxy_html 嗎?

我有一個 apache2 Web 伺服器,用於處理在另一台電腦上運行的 Rails3 應用程式的反向代理。

除了我的 mod_proxy_html 配置不會重寫 web 應用程式中產生的 URL 之外,該設定有效。

《反向代理場景》這正是我想要做的,所以我盡我所能完全遵循本教程。

我已申請或嘗試提供的答案這裡在 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 部分,就好像我的重寫規則配置不正確一樣(所以我當然專注於這一點)並且在從apphost 傳入html 並透過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 指令是您需要新增到設定中的指令。

相關內容