2023-03-10
小知识
00
请注意,本文编写于 90 天前,最后修改于 90 天前,其中某些信息可能已经过时。

Nginx作为中继服务器的时候身份是属于client,那么ip就会被固定,server端ip

也是固定,那么连接数就受限于Nginx服务器本身的port数量:65535(实际上达不到,会有保留端口)。

因此,可以为Nginx服务器一个网卡配置多个IP,通过增加client端的ip数量来突破限制。Nginx的proxy_bind虽然只能设置单一IP,没办法直接配置数组,但是可以设置变量(也支持透明传输),因此我们可以在不同的请求中对这个变量赋不同的IP,这样就能达到多出口的目的了。split_clients就可以帮我们完成上述功能。

配置文件如下:

http { ... upstream backend { server your_proxy_domain; } server { listen 80 default_server; server_name _; location / { proxy_pass http://backend; proxy_bind $split_ip; proxy_set_header X-Forwarded-For $remote_addr; } } # 只要请求过来,就会根据“uri+客户端端口”计算hash值,选出一个$split_ip,并赋给proxy_bind指令proxy_bind指定,就此玩成了多出口IP的配置 split_clients "$request_uri$remote_port" $split_ip { 33% 192.168.16.128; 33% 192.168.16.129; * 192.168.16.130; } }

至此,Nginx改造完成,通过增加多个网卡或者IP则单台Nginx对外发起的Connect成倍增加,突破65535限制。

本文作者:杰克贾

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!