在Linux下对Swagger进行限流,可通过以下方式实现:
Nginx限流
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
}
server {
location /swagger/ {
limit_req zone=mylimit burst=5 nodelay;
proxy_pass http://localhost:8080;
}
}
其中rate=1r/s
表示每秒1个请求,burst=5
允许突发5个请求。sudo systemctl restart nginx
。Redis+Lua脚本限流
Spring Cloud Gateway限流(适用于微服务)
application.yml
中配置限流规则:spring:
cloud:
gateway:
routes:
- id: swagger-route
uri: http://localhost:8080
predicates:
- Path=/api/**
filters:
- name: RequestRateLimiter
args:
key-resolver: "#{@ipKeyResolver}"
redis-rate-limiter.replenishRate: 1
redis-rate-limiter.burstCapacity: 5
需配合KeyResolver
定义限流键(如IP地址)。说明:
rate
、burst
)需根据业务需求调整,避免过度限制影响正常访问。