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

我有一个在云端的Ubuntu服务器。 我们称之为ServerAServerA已经安装了apache2,正在为HTTP请求提供默认页面。 mydomain.com指向ServerA的IP,因此默认的ServerA的站点也可以通过这个域名获得。

ServerA安装了一个OpenVPN,并作为VPN网关连接不同的客户端。

ServerB作为OpenVPN客户端连接到ServerA时ServerA的OpenVPN创build的OpenVPNnetworking中会分配一个本地IP。

我将myotherdoamin.com设置为指向相同的ServerA的IP。 我想这样configurationServerA ,这样,如果有一个到mydomain.com的HTTP请求进来 – 它被路由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可能是最常见的。