我的应用程序有这样的配置。
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;
}
}
如果我发送了2个以上的get请求,我将成功获得429。但是对于POST方法nginx什么都不做。有人遇到过这种问题吗?如何调试该问题?
我试过这个地图
map $request_method $limit_key2 { default ""; POST $binary_remote_addr; }
but no luck
我们正在使用信号科学和nginx。这就导致了这个问题。在nginx.conf文件中添加sigsci_handler_phase access;
行解决了这个问题。