商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何通过nginx配置限制访问频率

如何通过nginx配置限制访问频率

  发布于2026-07-29 阅读(0)

扫一扫,手机访问

服务器被恶意爬虫或高频请求搞到卡顿甚至宕机,这事儿不少运维都遇到过。其实解决方案很简单——Nginx自带一个叫ngx_http_limit_req_module的模块,专门用来限制客户端请求速率,相当于给服务器加了个“流量阀门”。下面直接上实战配置。

  1. 先确认Nginx装好了
    如果还没装,用这两条命令搞定:

    sudo apt update
    sudo apt install nginx
  2. 找到配置文件下手
    主配置文件一般在/etc/nginx/nginx.conf,不过更常见的做法是编辑虚拟主机配置,比如/etc/nginx/sites-a vailable/default

    sudo nano /etc/nginx/sites-a vailable/default
  3. 写入限频配置
    server块或location块里加上下面这段,注意要放在http块内(如果写在单独文件,记得包含进来):

    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;
                # 其他location配置...
            }
        }
    }

    这里解释一下每行在干什么:

    • limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; —— 用客户端IP($binary_remote_addr)作为标识,定义了一个叫mylimit的共享内存区域,大小10MB,速率限制为每秒1个请求。
    • limit_req zone=mylimit burst=5 nodelay; —— 引用上面定义的区域,允许瞬时突发5个请求(burst=5),并且这些突发请求不延迟处理(nodelay),直接放行,但超过这个额度就会返回503。
  4. 测试配置并生效

    sudo nginx -t
    sudo systemctl reload nginx

    如果测试通过,配置就生效了。现在你可以根据实际压力调整rateburst:比如想让每分钟最多60个请求,就把rate改成60r/m

进一步优化

  • 基于API密钥的限制:如果需求更复杂,比如要根据不同API Key做差异化限流,可以用ngx_http_auth_request_module结合外部认证服务来实现。
  • 日志记录:建议开启限制日志,方便监控哪些请求被拦截,排查问题。具体配置可以加limit_req_log_level指令。

这套配置上手快、性能开销小,是保护Nginx服务器最基础也最有效的手段之一。根据业务场景灵活调整参数,就能在防攻击和用户体验之间找到平衡点。

本文转载于:https://www.yisu.com/ask/30409954.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注