前言
先说结论
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.conf
为nginx.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; #总请求数
}