You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 15:05:30