我们有一个 Web 服务器,其中有多个 apache 实例监听各个端口(例如 8080、80801、8082)。
我们目前有一个在端口 80 上监听的 nginx 实例,它接收请求,然后通过域名将它们代理到适当的实例端口。
可以使用 iptables 做同样的事情吗?
答案1
不可以;在 IP 级别没有“目标域”的概念,只有目标 IP 地址,因此 iptables 无法帮助您 - nginx 依赖于请求的域作为 HTTP 请求中 URL 的一部分进行传输;但您可以直接在阿帕奇,而不需要 nginx 实例。
答案2
你做不到。在 HTTP 请求中,“域”在 Host: 标头中传递,该标头第 7 层.iptables 规则只能访问第 4 层/TCP 级别的信息。
答案3
如果您负担得起额外的地址使用,则一种干净的设置方法是让每个域指向不同的 IP 地址。然后配置此主机上的所有地址,并让 Apache 的每个实例绑定到单个地址的端口 80(使用语法Listen Address:Port
),然后您就可以删除 nginx。