<div dir="ltr">I would like to apply rate limiting based on 3 different criteria.<div><br></div><div>1. CDN should have rate limit of 100 r/s (identified by $http_host)</div><div>2. Whitelisted bots should have a rate limit of 15 r/s (identified by $http_user_agent)</div><div>3. All other users should have a rate limit of 5 r/s</div><div><br></div><div>The rules should be applied in the above order of preference. If a rule matches two criteria, the earlier one should get applied. How can I ensure this?</div><div><br></div><div>I have tried the following config, but it is always rate limited to 5 r/s, irrespective of the order of the limit_req entries.</div><div><br></div><div><div><font face="monospace, monospace">map $http_host $limit_cdn {</font></div><div><font face="monospace, monospace">    default '';</font></div><div><font face="monospace, monospace">    "<a href="http://cdn-cname.mydomain.com">cdn-cname.mydomain.com</a>" $binary_remote_addr;</font></div><div><font face="monospace, monospace">}</font></div><div><font face="monospace, monospace">map $http_user_agent $limit_bot {</font></div><div><font face="monospace, monospace">    default '';</font></div><div><font face="monospace, monospace">    ~*(google|bing) $binary_remote_addr;</font></div><div><font face="monospace, monospace">}</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">limit_req_zone $limit_cdn zone=limit_cdn:1m rate=100r/s;</font></div><div><font face="monospace, monospace">limit_req_zone $limit_bot zone=limit_bot:1m rate=15r/s;</font></div><div><font face="monospace, monospace">limit_req_zone $binary_remote_addr zone=limit_all:10m rate=5r/s;</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">limit_req zone=limit_all burst=12;</font></div><div><font face="monospace, monospace">limit_req zone=limit_bot burst=50 nodelay;</font></div><div><font face="monospace, monospace">limit_req zone=limit_cdn burst=200 nodelay;</font></div></div><div><br></div><div><br></div><div><br></div>















</div>