在高并发场景下,服务器很容易因为突发流量而崩溃。为了保护后端服务稳定运行,Nginx请求限制是一种非常有效的手段。本文将手把手教你如何配置 Nginx 的限流功能,即使是小白也能轻松上手!
一、为什么需要请求限制?
当你的网站突然遭遇大量请求(如爬虫、恶意攻击或秒杀活动),如果没有限制机制,服务器可能因资源耗尽而宕机。通过nginx限速,我们可以控制单位时间内允许的请求数量,从而保障核心服务的可用性。
二、Nginx 限流原理简介
Nginx 提供了两个核心模块用于限流:
limit_req:基于“漏桶算法”限制请求频率;limit_conn:限制单个 IP 或连接数。
这两种方式常用于实现高并发防护,防止系统被压垮。
三、实战:配置 limit_req 限流
下面是一个典型的限流配置示例:
# 在 http 块中定义限流区域http { # 定义一个名为 'mylimit' 的共享内存区,大小为 10MB, # 每秒最多处理 10 个请求(burst=20 允许突发 20 个) limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s; server { listen 80; server_name example.com; location /api/ { # 应用限流规则 limit_req zone=mylimit burst=20 nodelay; proxy_pass http://backend; } }} 参数说明:
zone=mylimit:10m:创建一个名为 mylimit 的共享内存区,10MB 可存储约 16 万个 IP 地址;rate=10r/s:每秒最多 10 个请求;burst=20:允许突发 20 个请求排队;nodelay:不延迟处理突发请求(立即响应或拒绝)。
四、配置 limit_conn 限制连接数
如果你希望限制每个 IP 同时打开的连接数,可以这样配置:
http { # 限制每个 IP 最多 5 个并发连接 limit_conn_zone $binary_remote_addr zone=addr:10m; server { location /download/ { limit_conn addr 5; # 超出限制返回 503 } }} 五、测试与验证
配置完成后,重启 Nginx:
sudo nginx -s reload 然后使用工具如 ab(Apache Bench)或 wrk 进行压力测试:
ab -n 100 -c 20 http://example.com/api/test 观察是否出现 503 Service Unavailable 响应,即可验证限流配置是否生效。
六、小贴士
- 不要对静态资源(如图片、CSS)限流,以免影响用户体验;
- 可结合白名单(allow/deny)对重要 IP 放行;
- 监控日志(access.log + error.log)及时调整限流阈值。
通过合理配置 Nginx请求限制,你可以有效提升系统稳定性,轻松应对流量高峰。快去试试吧!
文章版权声明:除非注明,否则均为V5主机测评网_性价比VPS_性价比云服务器_免费独立服务器原创文章,转载或复制请以超链接形式并注明出处。
