Nginx针对特定Location的限流规则未生效问题求助
Nginx针对特定Location的限流规则未生效问题求助
我有一个Symfony应用想要配置限流,设置了全局限流规则和针对PHP请求的单独限流规则,但目前只有全局规则在生效,PHP的规则完全没起作用,实在搞不懂问题出在哪,来求助大家!
下面是我的Nginx配置(限流数值只是测试用的,方便调试):
limit_req_zone $binary_remote_addr zone=limit_zone_general:10m rate=2r/m; limit_req_zone $binary_remote_addr zone=limit_zone_php:10m rate=1r/m; server { # ...省略其他无关配置 root /var/www/html/public; index index.php; limit_req zone=limit_zone_general; limit_req_status 429; location / { error_page 404 /meta/404; try_files $uri /index.php$is_args$args; } location ~ ^/index\.php(/|$) { limit_req zone=limit_zone_php; limit_req_status 429; } }
现在我访问domain.local/的时候,因为根目录下没有对应的静态文件,请求应该会被转发到index.php处理,按道理应该触发PHP对应的限流规则(每分钟只能访问1次),但实际生效的却是全局规则,我每分钟能访问两次,完全没触发PHP的限制。
有没有大佬能帮忙分析下问题出在哪?怎么才能让PHP的限流规则生效?
备注:内容来源于stack exchange,提问作者roadrunnr
相关产品推荐
相关产品推荐

