[Nginx] Rate Limit Whitelist
最近有個需求必須爬主站文章到活動網站
但因主站有設置 rate limit,連續打太多 request 會被導至 503
可想而知… 爬蟲就被拒於門外了
這時要在主站 nginx whitelist 裡加入爬蟲的 ip
http {
geo $whiteiplist {
default 1;
127.0.0.1 0;
10.0.0.0/8 0;
121.207.242.0/24 0;
}
map $whiteiplist $limit {
1 $binary_remote_addr;
0 "";
}
limit_conn_zone $limit zone=limit:10m;
server {
listen 8080;
server_name test.ttlsa.com;
location ^~ /ttlsa.com/ {
limit_conn limit 4;
limit_rate 200k;
alias /data/www.ttlsa.com/data/download/;
}
}
}
geo 指令內定義 $whiteiplist。預設值為 1
0 才是通過白名單
map 指令將 $whiteiplist 值為 1 的,mapping 為 $binaryremoteaddr; 將 $whiteiplist 值為 0 的,也就是白名單 IP,mapping 為空字串
limitconnzone 對於空值會忽略,進而達到白名單效果