NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
[TOC] 学习链接 https://www.cnblogs.com/biglittleant/p/8979915.html 官网文档 http://nginx.org/en/docs/http/ngx_http_limit_req_module.html # * 不行啊 限制ip加目录无效 # demo 限制并发量 https://blog.csdn.net/m0_38021517/article/details/111331163 ## 定义 id地址限流 `limit_req_zone $binary_remote_addr zone=java:50m rate=20r/s;` 服务器总负载 `limit_req_zone $server_name zone=perserver:50m rate=3500r/s;`; 请求路径 不带参数 ` limit_req_zone $uri zone=perport:50m rate=2000r/s; ` 日志等级 `limit_req_log_level error;` 单链接限流 `limit_req_zone $binary_remote_addr$request_uri zone=req_one:10m rate=30r/m;` `` ## 自定义返回 json内容 nginx限流会返回 503 状态码 如果想要返回自定义的json 需要增加以下配置 503限流返回默认值 ``` http { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { location /search/ { limit_req zone=one burst=5 nodelay; } } default_type application/json; location /echo { limit_req zone=mylimit nodelay; //定义状态码 return才会正确的返回200的状态 limit_req_status 405; error_page 405 = /503; default_type application/json; } location /503 { default_type application.json; add_header Content-Type 'application/json; charset-utf-8'; return 200 '{"code":0,"data":null,"message":"服务器繁忙"}'; break; } ``` # 请求限流规则 ## 定义规则 limit_req_zone imit_req_zone $binary_remote_addr zone=mylimit :10m rate=1r/s; - `$binary_remote_addr `参数 - `zone=one:10m` 命名:容器大小 - `rate=1r/s` 限制评率 1次1秒, `1r/m`为一次一分钟 ## 使用规则 limit_req zone=mylimit 伪静态中配置 , 通过定义的名字 ``` location /echo { limit_req zone=mylimit nodelay; default_type application/json; # return 200 $request_uri:$uri; # break; } ``` ### 参数 `burst=4` 允许四个请求被缓存 `nodelay` 直接退出