当post请求命中limit_req_zone时,nginx返回405



nginx配置

http {
limit_req_zone $binary_remote_addr zone=limit:50m rate=10r/m;
server {
server_name xxx;
error_page 503 @503;
location @503 {
rewrite ^(.*)$ /503.html break;
}
error_page 405 @405;
location @405 {
rewrite ^(.*)$ /503.html break;
}
}
}

因此,当请求数量达到极限时,如果方法是GET,则返回503,而方法是POST,则返回405,我不明白为什么POST方法返回405,以及为什么在我设置时405 error_page没有重写为503.html

当方法为POST时,不返回或重写静态内容,只返回503 status_code,然后修复:

http {
limit_req_zone $binary_remote_addr zone=limit:50m rate=10r/m;
server {
server_name xxx;
error_page 503 @503;
location @503 {
if ( $request_method = POST ) {
return 503 '{"code":503,"message":"Service Temporarily Unavailable"}';
}
rewrite ^(.*)$ /503.html break;
}
}
}

最新更新