Linux

Apache 選擇性地將請求反向代理到新伺服器

  • December 19, 2012

我正在將 Web 應用程序移動到不同數據中心中的一組新伺服器。作為測試期的一部分,我想根據 URL 中的模式將舊伺服器配置為某些請求的反向代理。

例如,如果有人要求:

http://old.example.com/foo/bar?q=1

…我想透明地給他們結果

http://new.example.com/foo/bar?q=1

重定向不起作用,因為它被用作 API 並且一些客戶端沒有正確地遵循重定向(修復客戶端不是一種選擇)。此外,這需要對 GET 和 POST 請求都有效。

要代理的 URL 列表將是選擇性的,例如,只有"foo/*"請求將被代理,而其他請求將僅由 old.example.com 提供服務,直到最終轉換。

mod_proxy正確的方法嗎?我找不到任何看起來像的例子:

  1. 允許選擇性代理(例如/foo/bar被代理但/baz/ham未被代理),
  2. 傳遞整個路徑和查詢字元串,並且
  3. 保持 POST 正文和所有 HTTP 標頭完好無損。

任何幫助將不勝感激。

從你描述的一個簡單的:

ProxyPass /foo/ http://new.example.com/foo/

應該管用。所有標頭和 GET/POST 查詢都應該被很好地轉發。ProxyPassReverse根據您的設置和需要,您可能需要匹配。如果您需要更多地控制代理哪些 URL,您可以使用:

ProxyPassMatch [regex] [url]

官方文件在解釋事情方面做得很好。如果您嘗試過這樣的代理,但它無法解決一個新問題,其中包含有關您嘗試過的內容的更具體細節以及確切的問題可能會給您帶來更好的結果。

引用自:https://serverfault.com/questions/459417