1、基于请求头字段进行连接数流控
配置示例:
# 限流配置定义# $http_limit_header 标识基于请求头limit-header进行流控# zone=req_limit_for_header:10m 定义共享内存用于存储状态,rate=1r/s 限制每秒1个请求limit_req_zone $http_limit_header zone=req_limit_header:10m rate=1r/s; server {listen 8000; location / {# 应用限流,burst=5 允许5个突发请求排队,nodelay不延迟处理排队请求limit_req zone=req_limit_header burst=5 nodelay; root html; index index.html index.htm; }}
2、定制限流响应界面
server {listen 8000; # 定义限流响应页面:采用429状态码# limit_req_status优先级高于location中return指令指定的响应码limit_req_status 429; # 使用429状态码(请求过多)error_page 429 /too_many_requests; location / {# 应用限流,burst=5 允许5个突发请求排队,nodelay不延迟处理排队请求limit_req zone=req_limit_header burst=5 nodelay; root html; index index.html index.htm; }# 自定义限流响应页面location = /too_many_requests {internal; # 只允许内部访问return 429 '<html><body>Too many request!</body></html>'; }}