Windows下Nginx连接数配置及请求限制

2022-11-22 16:25:03 浏览数 (1)

前言

先说结论

WIndows下的官方的Nginx配置连接数是无效的。 需要安装特定的Nginx。

如下是无效的:

代码语言:javascript复制
events {
    worker_connections  65535;
}

安装特定版本的Nginx

特定版本的Nginx Nginx for Windows下载地址:http://nginx-win.ecsds.eu/download/

解压后在服务器上面双击执行解压后的Tweak-Optimize tcpip parameters for nginx connections.reg文件。修改注册表连接数配置信息。

修改nginx-win.confnginx.conf

以后运行使用nginx_basic.exe

请求限制

为nginx防止恶意压力测试服务器,

以下做法可解决:

http{}字段中第一行添加:

代码语言:javascript复制
limit_conn_zone $binary_remote_addr zone=perip:10m;

server{}字段中添加:

代码语言:javascript复制
limit_conn perip 10;

Nginx限制并发连接数和每秒请求数 limit_conn_zone&limit_req_zone

同一时间连接数

limit_conn_zone

代码语言:javascript复制
#limit_conn_zone:限制并发连接数,即同一时间连接数
#设置一个自定义名字(perip),大小为10M的缓存空间,$binary_remote_addr表示以每个IP地址来限制
limit_conn_zone $binary_remote_addr zone=perip:10m;
#设置一个自定义名字(perserver),大小为10M的缓存空间,$server_name表示以server来限制
limit_conn_zone $server_name zone=perserver:10m;

server
{
  limit_conn perip 10;  #每个ip的并发连接数
  limit_conn perserver 20; #server总并发连接数
  limit_rate 1024k;#限制下载速度;
}

限制单位时间内的请求数

limit_req_zone

代码语言:javascript复制
#limit_req_zone:限制单位时间内的请求数
#设置一个自定义名字(perip),大小为10M的缓存空间,每个IP地址,每秒接受1个请求
limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;
#设置一个自定义名字(perserver),大小为10M的缓存空间,server,每秒接受10个请求
limit_req_zone $server_name zone=perserver:10m rate=10r/s;

server
{
  #单个IP的请求数,burst:缓冲队列的长度,nodelay:大于缓冲长度的將直接503,不设置nodelay则会排队等待
  limit_req zone=perip burst=5 nodelay; 
  limit_req zone=perserver burst=10; #总请求数
}

0 人点赞