Apache-2.4
ProxyPassReverse 指令有什麼用
來自 apache.org 的定義說:
該指令允許 Apache httpd 調整 HTTP 重定向響應的 Location、Content-Location 和 URI 標頭中的 URL。當 Apache httpd 用作反向代理(或網關)以避免繞過反向代理時,這是必不可少的,因為後端伺服器上的 HTTP 重定向位於反向代理之後。
只有上面特別提到的 HTTP 響應頭會被重寫。Apache httpd 不會重寫其他響應標頭,預設情況下也不會重寫 HTML 頁面內的 URL 引用。這意味著如果代理內容包含絕對 URL 引用,它們將繞過代理。要重寫 HTML 內容以匹配代理,您必須載入並啟用 mod_proxy_html。
path 是本地虛擬路徑的名稱;url 是遠端伺服器的部分 URL。這些參數的使用方式與 ProxyPass 指令相同。
有人可以解釋一下它是如何工作的。一般來說,這個指令是做什麼的?
如果實際處理請求的伺服器重定向到該伺服器上的不同 URL,則該
ProxyPassReverse
指令根據反向代理伺服器重寫 URL。例如,如 Apache文件中所述,如果:http://reverseproxy.com/mirror/foo/bar
被發送(反向代理)到
http://backend.example.com/bar
用於處理,但在後端伺服器確定正確的 URL 應該是
quux
,即必須將請求重定向到http://backend.example.com/quux
該
ProxyPassReverse
指令將 URL(在反向代理)重寫為http://reverseproxy.com/mirror/foo/quux
在將 HTTP 重定向響應轉發給客戶端之前。這樣,客戶端只知道反向代理伺服器,但仍然可以向正確的 URL 發出所需的請求,
http://reverseproxy.com/mirror/foo/quux
然後將反向代理到後端伺服器並正常處理。簡而言之,它只允許反向代理在 HTTP 重定向響應中返回正確的 URI 標頭。