ada*_*rod 13 nginx http-status-code
在节流/速率限制时,如何配置 nginx 以返回 http 状态代码 429(请求过多)而不是默认的 503(服务不可用)?
仅供参考,我使用 nginx 作为 HttpLimitReqModule 的反向代理。429 状态代码的草案规范是RFC6585。
stackexchanged上的这个(封闭)问题表明可以使用error_page指令。不过,我不希望返回一个429是否真的有一个服务器的问题(而不是客户打我们太多),服务器应该返回503服务不可用。
有什么建议?
van*_*ome 26
好消息,1.3.15 版 http://mailman.nginx.org/pipermail/nginx/2013-March/038306.html
我们有“limit_req_status”和“limit_conn_status”指令。我刚刚在 Gentoo Linux 上测试了它们(请注意,您需要编译模块 limit_req 和 limit_con)。
通过这些设置,我认为您可以实现您的要求:
limit_req_status 429;
limit_conn_status 429;
Run Code Online (Sandbox Code Playgroud)
我已经快速验证了这一点:
ab2 -n 100000 -c 55 "http://127.0.0.1/api/v1
Run Code Online (Sandbox Code Playgroud)
由于高请求率和 nginx 中配置的限制,大多数请求在激活指令后失败:
limit_req zone=api burst=15 nodelay;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20576 次 |
| 最近记录: |