温馨提示×

Nginx日志中的请求频率怎么限制

小樊
48
2026-01-03 21:48:54
栏目: 编程语言

在Nginx中,您可以使用limit_req_zonelimit_req指令来限制请求频率。以下是如何设置这些指令的步骤:

  1. http块中定义一个共享内存区域,用于存储客户端IP地址和请求计数。例如,每分钟最多允许5个请求:
http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/m;
    ...
}

这里,$binary_remote_addr是一个变量,表示客户端的IP地址。zone=mylimit:10m定义了一个名为mylimit的共享内存区域,大小为10MB。rate=5r/m表示每分钟最多允许5个请求。

  1. 在需要限制请求频率的serverlocation块中,使用limit_req指令应用限制:
server {
    ...
    location / {
        limit_req zone=mylimit burst=10 nodelay;
        ...
    }
}

这里,burst=10表示允许短时间内的突发请求,最多为10个。nodelay表示不对请求进行延迟处理,即立即处理请求,但在超过限制时会返回错误响应。

您可以根据需要调整rateburstnodelay参数的值。这样,Nginx就会根据设定的频率限制请求。如果请求超过了限制,Nginx将返回HTTP 503(Service Temporarily Unavailable)错误。

0