我想限制(但不阻止)各种爬虫。 根据类似问题的其他例子,我想出了这个:
http { ## 10MB zone, 5 reqs per sec limit_req_zone $limit zone=zone_a:10m rate=5r/s; geo $limited { default 0; 157.55.39.31/32 1; 157.55.39.39/32 1; 157.55.39.40/32 1; 157.55.39.166/32 1; 157.55.39.167/32 1; 157.55.39.212/32 1; 157.55.39.213/32 1; 68.180.229.48/32 1; } map $limited $limit { 0 "false"; 1 "true"; } ## - do something - }
如果我理解正确,地理区块中匹配的IP会将$限制为1,然后地图块将把$ limit设置为true / false。 我认为接下来需要发生的是这样的“if”陈述:
if ($limit = "true") { limit_rate zone=zone_a burst=10; }
这是做到这一点的正确方法吗? 限速是否有缺点?