nginx限流設置

nginx.conf設置


<code>########################worldapi############################
## 這裡取得原始用戶的IP地址,沒走CDN/SLB的,給到$remote_addr
map $http_x_forwarded_for $clientRealIp {
default $remote_addr;
~^(?P<firstaddr>[0-9\\.]+),?.*$ $firstAddr;
}
#設置IP白名單,對內部的IP不設限
map $clientRealIp $limit{
default $clientRealIp;
115.233.218.194 "";
115.198.223.22 "";
36.24.226.56 "";
#xx.xx.xx.xx "";
}
#以真實IP為單位,限制請求數,並返回429狀態;
limit_req_status 429;
limit_req_zone $limit zone=ConnLimitZone:20m rate=80r/s;
limit_req_zone $limit zone=singleConnLimitZone:20m rate=5r/m;
limit_req_log_level notice;
#以真實IP為單位,限制該IP的併發連接數,並返回429狀態;
limit_conn_status 429;
limit_conn_zone $limit zone=TotalConnLimitZone:20m ;
limit_conn TotalConnLimitZone 100;
limit_conn_log_level notice;
#以訪問域名為單位,限制總併發鏈接數;
limit_conn_zone $server_name zone=SumConnLimitZone:20m;
########################worldapi############################/<firstaddr>/<code>
<code>server.conf設置
location / {
#限制總併發連接數
#limit_conn SumConnLimitZone 10000;
#最多5個排隊, 由於每秒處理 50 個請求 + 5個排隊,你一秒最多發送 55 個請求過來,再多就直接返回 429 錯誤給你了
limit_req zone=ConnLimitZone burst=5 nodelay;
proxy_pass http://xxxxi;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Cache-Control no-cache;
add_header Cache-Control private;
}/<code>


nginx限流設置


分享到:


相關文章: