nginx Command

Nginx 限流配置命令

Nginx 常用限流配置命令,limit_req_zone 在 http 块定义速率与共享内存,limit_req 在 location 启用并配合 burst/nodelay 控制突发,limit_conn 限制单 IP 并发连接数,limit_rate 限制响应带宽,配合 geo/map 实现 IP 白名单豁免。

limit_req_zone 定义限流区域,limit_req 在 location 启用。burst 允许突发,nodelay 禁用延迟缓冲。

适用环境Linux / Nginx / 反向代理
风险等级
最后验证2026-07-03
建议权限普通用户

Scenario

什么时候用这组命令

这组命令适合在处理“Nginx 限流配置命令”时作为第一轮检查模板。使用时先替换占位符,再在目标机器或目标 namespace 中执行,避免在错误环境里得到误导结论。

Input

你需要先准备什么

  • 确认请求是否真正到达当前 Nginx,而不是 CDN、负载均衡或另一台机器。
  • 保留一次失败请求的时间、域名、路径、状态码和客户端 IP,方便和 access/error log 对齐。
  • 修改配置前先导出 nginx -T 的最终合并配置,避免只看了未生效的片段。

Risk Notes

执行风险

  • 不要在生产环境直接 restart Nginx,优先 nginx -t 后 reload,restart 会中断正在处理的连接。
  • 不要为了临时修复把 body size、CORS 或 TLS 校验无上限放开,应设置合理的业务上限并记录调整原因。
  • 不要忽略 error.log 中反复出现的 upstream 超时或 SSL 错误,这些往往是更大问题的早期信号。

Commands

命令详解

命令 1: 执行 limit_req_zone

用于补充“Nginx 限流配置命令”的排查证据链。limit_req_zone 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 1: 执行 limit_req_zone
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

命令 2: 执行 limit_req

用于补充“Nginx 限流配置命令”的排查证据链。limit_req 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 2: 执行 limit_req
limit_req zone=mylimit burst=20 nodelay;

命令 3: 执行 limit_conn_zone

用于补充“Nginx 限流配置命令”的排查证据链。limit_conn_zone 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 3: 执行 limit_conn_zone
limit_conn_zone $binary_remote_addr zone=connlimit:10m;

命令 4: 执行 limit_conn

用于补充“Nginx 限流配置命令”的排查证据链。limit_conn 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 4: 执行 limit_conn
limit_conn connlimit 10;

命令 5: 执行 limit_rate

用于补充“Nginx 限流配置命令”的排查证据链。limit_rate 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 5: 执行 limit_rate
limit_rate 1024k;

Workflow

建议执行顺序

按顺序执行,不要跳过确认类命令

先用只读命令确认状态,再执行会改变状态的命令。limit_req_zone 定义限流区域,limit_req 在 location 启用。burst 允许突发,nodelay 禁用延迟缓冲。

  • 在 http 块定义 limit_req_zone,指定 key、共享内存和速率。
  • 在 server 或 location 块用 limit_req 启用限流。
  • burst 参数允许突发请求数,nodelay 表示不延迟。
  • limit_conn 限制并发连接数,limit_rate 限制响应带宽。
  • 配合 geo 或 map 模块实现 IP 白名单豁免。
按顺序执行,不要跳过确认类命令
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
limit_req zone=mylimit burst=20 nodelay;
limit_conn_zone $binary_remote_addr zone=connlimit:10m;

把命令输出变成结论

命令本身不是结论。每次执行后要回答:目标是否存在、状态是否异常、异常是否能解释用户看到的现象。

  • 记录关键字段,而不是整屏复制
  • 把正常路径和异常路径输出对比
  • 输出为空也要解释:是确实没有,还是权限/过滤条件不对
把命令输出变成结论
limit_req zone=mylimit burst=20 nodelay;
limit_conn_zone $binary_remote_addr zone=connlimit:10m;
limit_conn connlimit 10;

执行前替换占位符并控制影响范围

包含 <service>、<pod>、<namespace>、<pid>、<container> 的命令必须先替换。涉及 reload、restart、KILL、vacuum、prune 的命令要确认影响范围。

  • 优先在测试环境或只读模式验证
  • 生产执行前保留回滚路径
  • 把最终可用命令写入工单或 runbook
执行前替换占位符并控制影响范围
limit_conn connlimit 10;
limit_rate 1024k;

Verification

怎么判断命令有效

  • 命令已在正确机器、正确用户、正确 namespace 或正确仓库下执行。
  • 输出能支撑明确判断:正常、异常、权限不足、目标不存在或需要下一跳排查。
  • 对有副作用的命令,已确认执行窗口、影响范围和回滚方式。

Prevention

沉淀到日常流程

  • 把 nginx -t 和 reload 后健康检查写入发布流程,每次变更都做一次端到端验证。
  • 为关键站点保留一条外网探测,监控状态码、证书有效期和响应时间,避免等到用户反馈才发现问题。
  • 把上传大小、代理超时、CORS 允许来源写成显式配置,避免散落在多个 location 中导致不一致。
  • 建立 Nginx 配置模板管理机制,所有 server block 使用统一模板,减少手写配置的语法错误和遗漏。

常见问题

limit_req 的 rate 10r/s 是什么意思?

每秒允许 10 个请求。Nginx 实际以毫秒级粒度处理,相当于每 100ms 一个请求。burst 允许额外的突发排队。

Long-tail SEO

你可能正在搜索这些报错

下面这些错误原文、场景词和中英文搜索词,都是排查同类问题时常见的入口。

  • nginx limit_req 限流配置
  • nginx limit_req_zone burst nodelay
  • nginx limit_conn 并发限制
  • nginx limit_rate 带宽限制
  • nginx 限流 IP 白名单
  • nginx 429 Too Many Requests
  • nginx rate limit 配置
  • nginx 限流 burst 参数