代理WebSocket连接和短暂的端口耗尽

cle*_*ong 6 nginx websocket node.js socket.io

我正在设计一个应用程序,它将使用WebSocket在发生更改时快速通知访问者.我打算用Nginx代理连接,因此它们可以与常规HTTP部分共享相同的地址.我关注的一件事是短暂的港口耗尽.在过去,当Nginx和Node后端之间的连接数超过25000时,我注意到了问题.我的问题是,以下配置是否会将限制增加到100K?

upstream backends {
    server 127.0.0.1:5000;
    server 127.0.0.2:5000;
    server 127.0.0.3:5000;
    server 127.0.0.4:5000;
}
Run Code Online (Sandbox Code Playgroud)

当然,需要相应地提高打开文件的限制.

假设该技术有效,它可以与外部服务器一起使用吗?为界面分配一系列IP地址有多难?网络不是我的强项......

xfe*_*eep 2

请尝试proxy_bind。它

使到代理服务器的传出连接源自指定的本地 IP 地址。参数值可以包含变量 (1.3.12)。

因此,如果我们的 nginx 代理服务器可以有多个 IP 地址,您的问题就可以解决。例如

location / {
   ...
   proxy_bind $picked_ip;
   proxy_pass http://backends;
}
Run Code Online (Sandbox Code Playgroud)

该变量$picked_ip可以通过在执行之前运行的重写处理程序来计算proxy_pass