服务器问答

Nginx 如何使用网卡上的多个 IP 地址去连接同一个 Upstream 从而突破连接数限制?
0
2021-05-19 19:42:27
idczone

如果使用 Ngxin 做网关,假设只使用 Nginx 所在机器网卡的一个 IP 地址,在确定连接到 upstream 的( saddr,sport,daddr, dport )四元组中,只有 sport 是可变的。为了突破这个限制,需要在 Nginx 所在的机器配置多个 IP 地址,那么如何才能让 Nginx 随机使大带宽服务器用多个本机 IP 地址发起对 Upstream 的链接呢?

Transparent 模式不在讨论范围内,因为需要在 Upstream 和 Nginx 所在的机器修改路由表,难以维护。


如果打开了 keepalive 也需要那么多连接数么?

可以假设这是一个消息推送服务,本身就是大量的长连接。

proxy_bind?

proxy_bind 可以指定源地址,但无法实现随机;
你可以把 Lua 模块编译上,proxy_bind 指定一个变量,用 lua 去动态改这个变量

消息推送服务是指 client -> nginx 长链接,不是 nginx ->upstream 长链接。这种动不动百万并发的歪门邪道少研究

我不知道你这个场景具体是 websock 还是 tcp 代理,也不知道其他业务场景,我感觉如果单纯考虑大量“长连接”的话,可能换 haproxy 更合适?

ngx_lua 很容易实现

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服