![Nginx 负载平衡作为网关(无 SNAT)](https://linux22.com/image/730055/Nginx%20%E8%B4%9F%E8%BD%BD%E5%B9%B3%E8%A1%A1%E4%BD%9C%E4%B8%BA%E7%BD%91%E5%85%B3%EF%BC%88%E6%97%A0%20SNAT%EF%BC%89.png)
我正在尝试将 Nginx 配置为 F5-BIG-IP 的最后手段备份,但我不确定是否可以将其配置为在流量处理方面与 F5 类似?
F5 目前部署为 L3 中的网关,如下所示(此处的所有地址都以 开头192.168.0.
):
edge router .13/30 --- .14/30 F5 .10/30 --- .9/30 core router --- other networks
边缘路由器对各种地址(以前是单个服务器)执行 DNAT,例如192.168.2.4
或192.168.1.3
。它们来自不同的网络。F5 充当网关,并使用此类目标地址平衡流量(不执行 SNAT)
所以我的问题是 - 我如何以这种方式部署 Nginx?我知道我可以在 Linux 级别上使用 iptables 和 ip 转发来充当网关并提供路由功能,但我不知道如何允许 Nginx 对目标不是此类192.168.2.4
Linux 机器本身的 IP(它是池成员之一的实际地址)的连接进行负载平衡,并且不执行 SNAT。
我考虑过使用iptables
withREDIRECT
但是我不确定 Nginx 是否支持这样的部署。
答案1
我在 nginx 网站上找到以下文章:
https://www.nginx.com/blog/ip-transparency-direct-server-return-nginx-plus-transparent-proxy/
而且它似乎甚至在 Nginx 开源版本上也受支持。-j REDIRECT
虽然这种方法似乎没有使用,但使用了备用路由表和一些用于出口的数据包标记机制。我还没有弄清楚从 iptables 和 Linux 数据包流的角度来看它究竟是如何以及为什么起作用的。
看上去相当棘手。
答案2
如果我理解正确的话,你想在 nginx 本身上进行负载平衡。你可以按照以下方式进行: NGINX 负载均衡