我的应用程序具有此配置。
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什么也不做。有人遇到过这种问题吗?如何调试这个问题?
我试过这张Mapmap $request_method $limit_key2 { default ""; POST $binary_remote_addr; }
但没找到
1条答案
按热度按时间tf7tbtn21#
我们正在使用信号科学沿着nginx。这导致了问题。在nginx.conf文件中添加这行
sigsci_handler_phase access;
解决了这个问题。