Nginx速率限制不适用于POST方法

hrysbysz  于 2023-05-16  发布在  Nginx
关注(0)|答案(1)|浏览(186)

我的应用程序具有此配置。

geo $limit {
default 1;
x.x.0.0/16 0;
}

map $limit $limit_key {
0 "";
1 $binary_remote_addr;
}

limit_req_zone $limit_key zone=mylimit:40m rate=70r/s;
limit_req_zone $binary_remote_addr zone=mylimt2:20m rate=2r/m;

server {
listen 8080;
listen [::]:8080;

    location ~* /api/v3/imprints/.*/testTriangles.* {
        limit_req zone=mylimit2;
        limit_req_status 429;
        limit_req_log_level notice;
        proxy_pass http://localhost:8000;
        proxy_set_header Host data.port.mywebsite.com;
    }
    
    location / {
        limit_req zone=mylimit;
        proxy_pass http://localhost:8000;
        proxy_set_header Host data.port.mywebsite.com;
        client_max_body_size 40M;
        proxy_read_timeout 120;
    }

}

如果我发送了两个以上的GET请求,我成功地得到了429。但是对于POST方法,nginx什么也不做。有人遇到过这种问题吗?如何调试这个问题?
我试过这张Map
map $request_method $limit_key2 { default ""; POST $binary_remote_addr; }
但没找到

tf7tbtn2

tf7tbtn21#

我们正在使用信号科学沿着nginx。这导致了问题。在nginx.conf文件中添加这行sigsci_handler_phase access;解决了这个问题。

相关问题