加载中...

Nginx ingress配置限流


前言

ingress作为目前常用的网关服务,在生产业务中难免会遇到很多爬虫的侵扰,这时候配置一些限流策略就成为一个必要的事情.也能保证生产稳定性,避免服务器资源过多损耗.

限流配置

annotations:
  nginx.ingress.kubernetes.io/limit-connection: 10 #单个IP的并发请求数
  nginx.ingress.kubernetes.io/limit-rps: 5 #每秒限制单个IP访问次数,突发限制为此乘以突发乘数,默认5
  nginx.ingress.kubernetes.io/limit-burst-multiplier: 3 #突发限制速率的倍数
  nginx.ingress.kubernetes.io/limit-whitelist: x.x.x.x #限流白名单

当我们配置限流后,用户访问当超过每秒15qps后,ingress就会返回503.但是503作为一个服务异常的状态吗,容易影响我们的日志分析结果,所以这里建议将ingress返回的状态吗修改为429

配置如下

ingressnginx-configuration文件中添加

  limit-req-status-code: '429'

这样限流后返回的就是429,不会影响日志分析结果

配置针对爬虫的user-agent

默认爬虫的user-agentpython-requests/2.27.1

我们可以在ingress中针对这个user-agent做限制,返回404

nginx.ingress.kubernetes.io/server-snippet: |-
      set $agentflag 0;

              if ($http_user_agent ~* "python-requests/2.27.1" ){
                set $agentflag 1;
              }

              if ( $agentflag = 1 ) {
                return 404;
              }

文章作者: huhuhahei
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 huhuhahei !
评论
  目录