iptables路由dest。 域而不是dest。 IP?

我们有一个Web服务器,有几个监听各种端口的Apache实例(例如8080,80801,8082)。

我们目前有一个监听端口80的nginx实例,它接受请求,然后通过域名把它们代理到正确的实例端口。

iptables可以做同样的事吗?

没有; 在IP级别没有“目标域名”的概念,只有目标IP地址,所以iptables不能帮助你–nginx依靠所请求的域名作为HTTP请求中URL的一部分被传输; 但你可以直接在apache中实现效果,而不需要nginx实例。

你不能这样做。 在HTTP请求中,“域”是在第7层的Host:头中传送的。 iptables规则只能访问第4层/ TCP级别的信息。

一个干净的方法来设置,如果你能负担额外的地址使用,是让每个域指向一个不同的IP地址。 然后configuration此主机上的所有地址,并让每个Apache实例绑定到单个地址的端口80(使用语法Listen Address:Port ),并且可以删除nginx。