Nginx分片限流、代理緩存

一、全侷限流

 在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以某個常規字符串開頭,不是正則匹配

~ 表示區分大小寫的匹配

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

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章