RDK*_*RDK 0 linux iptables forwarding
我想在防火墙后面设置两个 Web 服务器,这两个服务器都可以使用普通端口 80 和 URL 从 Internet 浏览器客户端访问。例如 server1 www.abc.com和 server2 www.def.com。
我不是专家,但我想我了解如何使用 IPTABLE 进行端口转发。但我不知道(或没有找到)的是如何根据请求的 Web 服务器 URL 有选择地进行转发。
假设两台服务器的私有 IP 地址分别为 10.0.0.100 和 10.0.0.110,而我的防火墙路由器的公共地址为 1.2.3.4。我想要的是 URL www.abc.com的端口 80 流量作为端口 80 转到地址 10.0.0.100,同样,URL www.def.com的端口 80 流量转到 10.0.0.110。
我想如果需要的话我可以让两台服务器监听不同的端口,即 9000 和 9100,而不是 80。
有人可以提供一些想法吗?谢谢
IPTables 无法做到这一点。这是因为目标服务器包含在 HTTP 请求标头字段中。
TCP连接的第一部分是握手,建立客户端和服务器之间的连接。此时,没有有关可用主机名的信息。HTTP请求头字段在握手后变为。
由于 IPTables 只是转发 IP 数据包,因此它无法将 TCP 握手数据包转发到正确的目的地。
您需要在防火墙机器上设置反向代理,例如 HAProxy、nginx 或 Apache。