V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
herozzm
V2EX  ›  问与答

有用 nginx 的限访问频率的 ngx_http_limit_req 模块吗?排除性限制如何做?

  •  
  •   herozzm · 2023-03-25 23:51:50 +08:00 · 1110 次点击
    这是一个创建于 640 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在看到的资料都是全局性的限制高频率访问的 ip ,但是这样会把爬虫也给限制了,影响了网站排名。 我不想限制搜索引擎爬虫(需要正常放行),比如 Googlebot 和 baiduSpider ,该怎么做呢?求助大家 我的目前的配置可以全局限制访问 ip 频率,问了 chatGPT 半天,它也给不出正确答案,看看老铁的厉害

    http {
      # ...
        limit_req_zone $binary_remote_addr zone=mylimit:10m rate=15r/m;
        
        server {
              location ~ \.php {
                     limit_req zone=mylimit burst=5 nodelay;
             }
        }
    }
    
    12 条回复    2023-03-27 11:42:05 +08:00
    ab
        2
    ab  
       2023-03-26 02:33:57 +08:00   ❤️ 2
    # 蜘蛛白名单
    map $http_user_agent $limit{
    default $binary_remote_addr;
    ~*(Baiduspider|360Spider|bingbot|Googlebot|Sogou|YoudaoBot|Sosospider) "";
    }
    limit_req_zone $limit zone=myqps:30m rate=2r/s;

    limit_req zone=qps burst=10 nodelay;
    limit_req_status 429;
    ab
        3
    ab  
       2023-03-26 02:34:56 +08:00   ❤️ 1
    后两行用于 server 段
    herozzm
        4
    herozzm  
    OP
       2023-03-26 02:51:01 +08:00
    @ab 当遇到搜索引擎把`limit_req_zone`的`key`设为""空字符串是啥含义?会有什么问题吗?
    ab
        5
    ab  
       2023-03-26 02:59:19 +08:00 via iPhone   ❤️ 1
    @herozzm #4 这样不就可以放行了吗?
    herozzm
        6
    herozzm  
    OP
       2023-03-26 03:04:19 +08:00
    @ab 我测试一下,我是没太理解为空的含义,$binary_remote_addr 是以 ip ,我知道
    ab
        7
    ab  
       2023-03-26 04:44:03 +08:00 via iPhone
    @herozzm #6 每个用户都有一堆参数可以当做限频属性。使用 ip 是因为 ip 的唯一性,别的参数都会误杀。那么你要放行例外,当然只能放空
    yrj
        8
    yrj  
       2023-03-27 03:45:39 +08:00
    你用 UA 做放行,那不是掩耳盗铃麽。。
    herozzm
        9
    herozzm  
    OP
       2023-03-27 04:11:09 +08:00 via iPhone
    @yrj ua 确实不是好办法 你有更好的办法吗?手头也没有蜘蛛的 ip 地址
    yrj
        10
    yrj  
       2023-03-27 06:16:18 +08:00
    @herozzm 没啥好办法,就是建立 ip 数据库。
    ab
        11
    ab  
       2023-03-27 11:09:59 +08:00
    @yrj 意思意思,门槛抬高一点就是了。哪里 100%的防守
    herozzm
        12
    herozzm  
    OP
       2023-03-27 11:42:05 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5383 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 06:02 · PVG 14:02 · LAX 22:02 · JFK 01:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.