在 Linux 上根据请求的 URL 将 HTTP(S) 流量路由到特定 IP

在 Linux 上根据请求的 URL 将 HTTP(S) 流量路由到特定 IP

我在云端有一个 Ubuntu 服务器。我们称之为服务器A服务器A安装了 apache2 并且为 HTTP 请求提供默认页面。mydomain.com指向服务器A的 IP,因此默认服务器A的网站也可以通过此域名访问。

服务器A安装了 OpenVPN 并作为不同客户端连接的 VPN 网关。

什么时候服务器B连接到服务器A作为 OpenVPN 客户端,它会在 OpenVPN 网络中被分配一个本地 IP,服务器A的 OpenVPN 已经创建。

我设置myotherdoamin.com为指向相同服务器A的 IP。我想服务器A进行这样的配置,以便当 HTTP 请求mydomain.com到达时,它将被路由到服务器A的 apache2 和本地站点提供服务。如果有请求myotherdomain.com进来,我希望服务器A将请求路由到连接的服务器B的 HTTP 端口,从而返回 VPN 客户端的 HTTP 响应。

我的问题是:

  1. iptables 是否能够根据 HTTP 请求标头制定路由规则?
  2. apache2 是否能够根据 HTTP 请求标头将请求路由到其他 IP?
  3. 哪个应用程序最适合处理我想要的行为?

谢谢。

答案1

iptables 是否能够根据 HTTP 请求标头制定路由规则?

不是。IPTables 在第 3/4 层工作,而 HTTP 请求标头在第 7 层。

apache2 是否能够根据 HTTP 请求标头将请求路由到其他 IP?

是的,使用mod_proxy,Apache 可以将这些请求代理到另一台服务器。

哪个应用程序最适合处理我想要的行为?

如上所述,mod_proxy 可以满足您的需要,但任何其他可以在第 7 层运行的反向代理都可以。除了 Apache 的 mod_proxy,Nginx 和 HAproxy 可能是最常见的。

相关内容