Linux

在 Linux 上根據請求的 URL 將 HTTP(S) 流量路由到特定 IP

  • July 30, 2015

我在雲中有一個 Ubuntu 伺服器。我們稱之為ServerAServerA安裝了 apache2,並為 HTTP 請求提供預設頁面。mydomain.com指向ServerA的 IP,因此預設ServerA的站點也可通過此域名獲得。

ServerA安裝了 OpenVPN,並作為 VPN 網關供不同客戶端連接。

ServerB作為 OpenVPN 客戶端連接到ServerA時,它會被分配到**ServerA的 OpenVPN 創建的 OpenVPN 網路中的本地 IP。

我設置myotherdoamin.com為指向同一個ServerA的 IP。我希望以這種方式配置ServerA,以便如果有 HTTP 請求mydomain.com進入 - 它被路由到ServerA的 apache2 並提供本地站點。如果有請求myotherdomain.com進入,我希望ServerA將請求路由到連接的ServerB的 HTTP 埠,從而返回 VPN 客戶端的 HTTP 響應。

我的問題是:

  1. iptables 是否能夠基於 HTTP 請求標頭進行路由規則?
  2. apache2 是否能夠根據 HTTP 請求標頭將請求路由到其他 IP?
  3. 哪個應用程序最適合處理我想要的行為?

謝謝你。

iptables 是否能夠基於 HTTP 請求標頭路由規則?

不,這不對。IPTables 在第 3/4 層工作,HTTP 請求標頭在第 7 層。

apache2 是否能夠根據 HTTP 請求標頭將請求路由到其他 IP?

是的,使用mod_proxy,Apache 可以將這些請求代理到另一台伺服器。

哪個應用程序最適合處理我想要的行為?

如上所述,mod_proxy 可以為您工作,但任何其他可以在第 7 層執行的反向代理都可以解決問題。除了 Apache 的 mod_proxy,Nginx 和 HAproxy 可能是最常見的。

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