将端口 80 流量转发到防火墙后面的多个 Web 服务器

将端口 80 流量转发到防火墙后面的多个 Web 服务器

我想在防火墙后面设置两个 Web 服务器,它们都可以通过 Internet 浏览器客户端使用常规端口 80 和 URL 进行访问。例如 server1www.abc.com和服务器2www.def.com

我不是专家,但我想我知道如何使用 IPTABLE 进行端口转发。但我不知道(或尚未找到)如何根据请求的 Web 服务器 URL 有选择地进行转发。

假设两台服务器分别位于私有 IP 地址 10.0.0.100 和 10.0.0.110 上,而我的防火墙路由器位于公共地址 1.2.3.4 上。我想要的是端口 80 流量,URLwww.abc.com以地址 10.0.0.100 作为端口 80,同样,对于端口 80 流量,URL 也一样www.def.com转到 10.0.0.110。

我想如果需要的话,我可以让两个服务器监听不同的端口,即 9000 和 9100,而不是 80。

有人能提供一些想法吗?谢谢

答案1

IPTables 无法做到这一点。这是因为目标服务器包含在 HTTP 请求标头字段中。

TCP 连接的第一部分是握手,建立客户端和服务器之间的连接。此时,没有可用的主机名信息。握手之后,HTTP 请求标头字段变为。

由于 IPTables 只是转发 IP 数据包,它无法将 TCP 握手数据包转发到正确的目的地。

您需要在防火墙机器上设置反向代理,如 HAProxy、nginx 或 Apache。

相关内容