0

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

4

1 回答 1

0

不要返回或重写静态内容,而是在方法为 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;
      }
   }
}
于 2022-01-17T12:24:03.730 回答