Nginx 限制并发请求配置
Nginx 并发请求限制配置指南
1. 参数说明
在本指南中,我们将使用以下参数进行配置:
- 并发限制:60
- 限制当前站点的最大并发请求数。
- 单 IP 限制:10
- 限制单个 IP 地址的最大并发请求数。
- 流量限制:512 KB
- 限制每个请求的流量上限(单位:KB)。
2. 配置并发请求限制
以下是针对上述参数的 Nginx 配置示例:
http {
# 定义一个限制区域 addr,基于客户端 IP 地址($binary_remote_addr),存储空间大小为 10MB
limit_conn_zone $binary_remote_addr zone=addr:10m;
# 定义一个请求速率限制区域,基于客户端 IP 地址,每秒最多处理 60 个请求
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=60r/s;
server {
listen 80; # 监听 80 端口
server_name example.com; # 修改为您的域名
location / {
# 限制每个 IP 地址的最大并发连接数为 10
limit_conn addr 10;
# 使用请求速率限制区域,并允许短时间内的请求突发(burst)数量为 20
limit_req zone=req_limit burst=20;
# 限制每个请求的流量上限为 512 KB
client_max_body_size 512k;
# 默认返回首页文件
index index.html;
# 自定义 503 错误页面
error_page 503 /custom_503.html;
}
# 自定义错误页面的 location
location = /custom_503.html {
root /usr/share/nginx/html; # 自定义错误页面存放路径
internal; # 仅允许内部重定向访问
}
}
}
配置说明
- limit_conn_zone:定义一个基于客户端 IP 地址的限制区域,大小为 10MB。
- limit_req_zone:创建一个基于客户端 IP 地址的请求速率限制区域,每秒最多处理 60 个请求。
- limit_conn:设置每个 IP 地址的最大并发连接数为 10,超出限制将返回 503 状态码。
- limit_req:允许短时间内的突发请求数量为 20,超出请求将被延迟或丢弃。
- client_max_body_size:限制每个请求的流量上限为 512 KB。
3. 自定义错误页面
在配置中,我们添加了自定义的 503 错误页面。您可以根据需要创建自定义的 HTML 页面并将其放置在指定的路径中,例如 /usr/share/nginx/html/custom_503.html。
自定义错误页面示例
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>服务不可用</title>
<style>
body { text-align: center; padding: 150px; }
h1 { font-size: 50px; }
body { font: 20px Helvetica, sans-serif; color: #333; }
article { display: block; text-align: left; width: 650px; margin: 0 auto; }
a { color: #dc8100; text-decoration: none; }
a:hover { color: #333; text-decoration: underline; }
</style>
</head>
<body>
<article>
<h1>服务不可用</h1>
<div>
抱歉,您的请求过于频繁,请稍后再试。
</div>
</article>
</body>
</html>
4. 测试配置
完成配置后,您可以通过以下步骤测试 Nginx 的限速功能:
-
重新加载 Nginx 配置:
sudo systemctl reload nginx -
使用工具进行压力测试:
您可以使用
ab(Apache Benchmark)或siege等工具进行压力测试。例如,使用ab:ab -n 100 -c 10 http://example.com/这将模拟 100 个请求,最多同时 10 个并发连接。
-
观察 Nginx 日志:
检查 Nginx 的访问日志和错误日志,确认限速是否生效:
sudo tail -f /var/log/nginx/access.log sudo tail -f /var/log/nginx/error.log
完成
通过以上步骤,您已经成功配置了 Nginx 的并发请求限制。这样的配置可以有效防止恶意流量和高峰期对服务器资源的过度占用,提高网站的安全性和稳定性。根据实际需求,您可以进一步调整连接数、请求速率和流量限制的参数。