limit_req_dry_run

limit_req_dry_run 指令允许您在不实际强制执行的情况下测试限流。 — NGINX HTTP Core

limit_req_dry_run
httpserverlocation
语法limit_req_dry_run on | off;
默认值off
上下文http, server, location
模块NGINX HTTP Core
参数flag

说明

limit_req_dry_run 指令专为便于在 NGINX 中开发和测试限流配置而设计。启用时,它通过处理请求但不实际强制任何限制来模拟限流效果。这在管理员想要监控在超过速率限制时本可能被处理或拒绝的请求数量而不影响实时流量的情况下特别有用。 该指令接受一个二元参数——on 或 off。设置为 on 时,NGINX 会按照其他指令(例如 limit_req_zone)定义的规则执行限流检查,但不会基于这些限制拒绝请求。相反,日志会标明请求是否超限。这允许在全面部署前对限流参数进行微调并确保一切按预期工作。该指令具有上下文敏感性,可以在 NGINX 配置的 http、server 或 location 块中进行配置。 通过使用 limit_req_dry_run,管理员可以收集有关请求行为和模式的数据,这有助于在指令关闭后有效确定应应用的合适速率限制。然而,必须记住,启用模拟运行时,实际的预期限流不会生效,如果在开始强制执行后将限制设置得过高,可能会导致未被监控的流量激增。

配置示例

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

    server {
        location / {
            limit_req zone=one;
            limit_req_dry_run on;
        }
    }
}

在生产环境中未经仔细考虑就使用 limit_req_dry_run,可能会导致意外的大量流量通过且未被跟踪。

在最终部署之前,务必关闭 dry run 模式,以便强制执行限流并避免流量过载。