温馨提示×

Nginx如何限制访问速率

小樊
44
2025-10-19 18:14:46
栏目: 编程语言

在Nginx中,你可以使用ngx_http_limit_req_module模块来限制访问速率。这个模块允许你设置请求速率限制,以防止恶意用户或爬虫对服务器造成过大压力。以下是如何配置Nginx以限制访问速率的步骤:

  1. 安装Nginx(如果尚未安装):

    sudo apt update
    sudo apt install nginx
    
  2. 编辑Nginx配置文件: 通常,Nginx的主配置文件位于/etc/nginx/nginx.conf,但你也可以在特定的虚拟主机配置文件中进行设置。例如,编辑/etc/nginx/sites-available/default

    sudo nano /etc/nginx/sites-available/default
    
  3. 添加限速配置: 在server块中添加以下配置:

    http {
        # 其他配置...
    
        limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
    
        server {
            listen 80;
            server_name example.com;
    
            location / {
                limit_req zone=mylimit burst=5 nodelay;
                # 其他配置...
            }
        }
    }
    

    解释:

    • limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;

      • $binary_remote_addr:使用客户端的IP地址作为键。
      • zone=mylimit:10m:定义一个名为mylimit的区域,大小为10MB。
      • rate=1r/s:限制速率为每秒1个请求。
    • limit_req zone=mylimit burst=5 nodelay;

      • zone=mylimit:使用之前定义的区域。
      • burst=5:允许突发请求达到5个,超过这个数量的请求将被延迟处理。
      • nodelay:对于突发请求,不进行延迟处理,立即返回429状态码(Too Many Requests)。
  4. 保存并退出编辑器

    Ctrl+X
    Y
    Enter
    
  5. 测试Nginx配置

    sudo nginx -t
    
  6. 重新加载Nginx

    sudo systemctl reload nginx
    

现在,Nginx将会根据配置限制访问速率。你可以根据需要调整rateburst参数以适应你的具体需求。

0