温馨提示×

怎样用Nginx限制访问频率

小樊
49
2026-01-11 08:43:21
栏目: 编程语言

在Nginx中,您可以使用ngx_http_limit_req_module模块来限制访问频率。以下是一个简单的示例,说明如何使用此模块限制每个IP地址的请求速率。

  1. 首先,确保您的Nginx安装包含了ngx_http_limit_req_module模块。您可以通过运行以下命令来检查:
nginx -V 2>&1 | grep --color=auto 'http_limit_req'

如果看到--with-http_limit_req_module,则表示您的Nginx已包含此模块。

  1. 打开Nginx配置文件(通常位于/etc/nginx/nginx.conf/etc/nginx/sites-available/your_domain.conf)。

  2. httpserverlocation块中,添加以下配置:

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

    server {
        # ...
        location / {
            # ...
            limit_req zone=mylimit burst=5 nodelay;
            # ...
        }
    }
}

在这个示例中,我们首先使用limit_req_zone指令定义了一个名为mylimit的区域,该区域用于存储每个IP地址的请求计数。$binary_remote_addr表示使用客户端的IP地址作为键。zone=mylimit:10m定义了存储限制数据的内存区域大小为10MB。rate=1r/s表示允许每个IP地址每秒最多发送1个请求。

接下来,在location块中,我们使用limit_req指令来应用限制。zone=mylimit指定要使用的限制区域,burst=5表示允许短时间内的突发请求达到5个,nodelay表示不对请求进行延迟处理。

  1. 保存配置文件并重新加载Nginx:
sudo nginx -t      # 检查配置文件语法是否正确
sudo nginx -s reload  # 重新加载配置文件

现在,Nginx将限制每个IP地址的访问频率,超过限制的请求将被延迟处理或返回503错误。

0