Nginx有这个有用的模块,名为ngx_http_limit_req_module ,您可以根据IP或请求数量限制对服务器的请求。
是否可以限制包含自定义标题的位置? 例如,我尝试过,但它无法启动nginx。
location /myservice { if ($http_x_custom_header) { limit_req zone=one burst=5; } }
具体的错误是:
nginx:[emerg]“limit_req”指令不允许在/ etc / nginx / sites-enabled / default这里
即它不喜欢if块中的limi_req指令。 在if区块之外很好。
尽pipe如此,我也许能够在位置之外使用不同的极限参数。
你是对的, limit_req不能在这个级别使用。
解决方法如下。
error_page 418 = @limitreq; location /myservice { if ($http_x_custom_header) { return 418; } } location @limitreq { limit_req zone=one burst=5; <rest of config> }
如果custom_header存在,这将返回418 ,nginx将截取并发送到自定义位置块,这将应用limit_req