Nginx分片限流

SportSky發表於2022-05-20

一、全侷限流

 在http節點中新增

 # 建立限流規則
    limit_req_zone $binary_remote_addr zone=addr:10m rate=1r/s;# 客戶端進行限流
    # limit_req_zone $server_name zone=addr:10m rate=1r/s; # 服務端進行限流
    server {
        # 監聽埠預設是80
        listen 80;

        # 伺服器ip或域名
        server_name 192.168.140.130;
         location / {
             limit_req zone=addr burst=1 nodelay;
             proxy_pass http://xiaohemiao;

         }
    }

    upstream xiaohemiao {


        server 192.168.140.130:7777; # 應用埠7777
        server 192.168.140.130:8888; # 應用埠8888
    }
  • $binary_remote_addr 針對客戶端ip限流;
  • $server_name 針對服務端進行限流
  • zone=ip_limit:10m 限流規則名稱為ip_limit,允許使用10MB的記憶體空間來記錄ip對應的限流狀態;
  • rate=1r/s 限流速度為每秒1次請求
  • burst為允許快取的速率數量進行排隊
  • nodelay為不需要等待排隊

二、自定義限流

比如只對登入進行限流,假設登入介面名為login

location = /login {
             limit_req zone=addr burst=1 nodelay;
             proxy_pass http://xiaohemiao;

         }

 

在配置中需要注意的一點是location匹配規則和優先順序

= 開頭表示精確匹配

^~ 開頭表示url以某個常規字串開頭,不是正則匹配

~ 表示區分大小寫的匹配

~* 開頭表示不區分大小寫的正則匹配

/ 通配匹配,如果沒有其他匹配,任何請求都會匹配到

 

相關文章