前言
先说结论
WIndows下的官方的Nginx配置连接数是无效的。
需要安装特定的Nginx。
如下是无效的:
1 | events { |
安装特定版本的Nginx
特定版本的Nginx
Nginx for Windows下载地址:http://nginx-win.ecsds.eu/download/
解压后在服务器上面双击执行解压后的Tweak-Optimize tcpip parameters for nginx connections.reg
文件。修改注册表连接数配置信息。
修改nginx-win.conf
为nginx.conf
以后运行使用nginx_basic.exe
。
请求限制
为nginx防止恶意压力测试服务器,
以下做法可解决:
http{}字段中第一行添加:
1 | limit_conn_zone $binary_remote_addr zone=perip:10m; |
server{}字段中添加:
1 | limit_conn perip 10; |
Nginx限制并发连接数和每秒请求数 limit_conn_zone
&limit_req_zone
同一时间连接数
limit_conn_zone
1 | #limit_conn_zone:限制并发连接数,即同一时间连接数 |
限制单位时间内的请求数
limit_req_zone
1 | #limit_req_zone:限制单位时间内的请求数 |
获取连接数
Web获取
此方法需要依赖于nginx的http_stub_status_module
模块,可输入nginx -V
查看是否已经安装此模块,如果没有安装需要重新编译该模块。
1 | nginx version: nginx/1.12.2 |
在您的任意一个server段内,添加如下配置:
1 | location /status { |
复制
配置修改完毕后输入命令:nginx -t
确保语法没有问题,并重载一次nginx配置nginx -s reload
,使其生效。
再访问http://youdomain.com/status
就可以看到连接数状态了,如下截图。
命令获取
Windows
1 | netstat -ano |find ":80 " /c |
Linux
1 | netstat -apn|grep 'nginx: worker'|wc -l |
常见错误
句柄数量限制
The system cannot find the path specified
原因:
Windows版本因为文件访问句柄数被限制为1024了,当访问量大时就会无法响应。
这种需要安装特定的版本。
超连接数提示
这里只设置了10做测试用。
2022/11/17 18:08:07 [alert] 13996#7648: 10 worker_connections are not enough