http{
#limit_req_zone 用来限制单位时间内的请求数目,以及速度限制。
#limit_conn_zone 限制并发连接数以及下载带宽。
#每个请求分配10m内存
limit_conn_zone $binary_remote_addr zone=perip:10m;
#限制同一server最大并发数
limit_conn_zone $server_name zone=perserver:10m;
#每个请求分配10m内存,限制频率为每秒10个请求
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server{
#当超过限制规则后,返回的响应状态码,默认是503。
limit_conn_status 503;
#当达到最大限制规则的连接数后,记录日志的等级。
limit_conn_log_level notice;
#这个配置将限制所有访问ip的请求速率为10个请求/秒
#允许超过频率限制的请求数不多于5个
#如果客户端超过这个速率,Nginx将返回503错误码,并且客户端将无法访问您的Web应用程序
#nodelay 超过的请求不被延迟处理,设置后15个请求在1秒内处理,不设置这无限排队
location / {
limit_req zone=one burst=5 nodelay;
}
#这个配置将只允许来自example.com站点和其子域名的请求。
#如果一个请求没有引用头或者引用头不是一个有效的来源,Nginx将返回403错误码。
#并且客户端将无法访问您的Web应用程序。
location / {
valid_referers none blocked *.example.com;
if ($invalid_referer) {
return 403;
}
}
#这个配置将限制每个IP地址的最大并发连接数为10个。
#如果一个IP地址超过这个限制,Nginx将开始拒绝来自该IP地址的新连接,直到其并发连接数降低到10个以下。
location / {
limit_conn perip 10;
}
#限制同一server(虚拟主机)最大并发数。
location / {
limit_conn perserver 100;
}
#限制下载速度
location / {
limit_rate 100k;
}
}
}