1、限制访问频率
http {
# 定义了一个大小 10M 的 mylimit 缓冲区(容器),请求频率为每秒 1 个请求(nr/s)
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
}
server {
listen 80;
location / {
# nodelay 不延迟处理
# burst 是配置超额处理,可简单理解为队列机制
# 上面配置同一个 IP 每秒只能发送一次请求(1r/s),这里配置了缓存3个请求,就意味着同一秒内只能允许 4 个任务响应成功,其它任务请求则失败(503错误)
limit_req zone=mylimit burst=3 nodelay;
proxy_pass http://localhost:8080;
}
}
2、限制并发连接数
http {
# 定义了一个 myip 缓冲区(容器)
limit_conn_zone $binary_remote_addr zone=myip:10m;
limit_conn_zone $server_name zone=myServerName:10m;
}
server {
location / {
# 每个 IP 只允许 10 个连接
limit_conn myip 10;
# 设置了整个虚拟服务器同时最大并发数最多只能100个链接
limit_conn myServerName 100;
proxy_pass http://localhost:8080;
}
}