如何重寫 Apache 2 中反向代理頁面引用的資源的根位置?

如何重寫 Apache 2 中反向代理頁面引用的資源的根位置?

我們有一個應用程式伺服器位於http://foo.bar

需要使用反向代理透過 http://wibble/foo 存取它。

我已經做到了,但是 http:// foo.bar 中有一些內容引用自 /

例如:

/圖片/blah.jpg

所以它試圖獲取 http://wibble/images/blah.jpg 而不是

http://wibble/foo/images/blah.jpg

知道如何讓它為 / 引用的任何內容插入 /foo 前綴嗎?

答案1

模組代理絕不修改 HTML。

只有上面特別提到的 HTTP 回應頭才會重寫。 Apache 不會重寫其他回應標頭,也不會重寫 HTML 頁面內的 URL 引用。這意味著如果代理內容包含絕對 URL 引用,它們將繞過代理。 Nick Kew 的 mod_proxy_html 是一個第三方模組,它將查看 HTML 內部並重寫 URL 引用。

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

答案2

如果您使用 nginx 作為前端伺服器,則可以使用 HttpSubModule 來執行替換。本質上,nginx 應該代理請求並對傳回的文字執行替換。但我確實相信,如果後端有壓縮,則無法使用此功能(因此只要前端伺服器上有壓縮,就應該沒問題):

本質上:Nginx -> 代理到 apache -> 返回 Nginx -> 執行替換 -> 壓縮和服務

我認為 Apache 和其他伺服器也存在類似的模組。

相關內容