如何在Nginx配置中模拟随机504网关超时错误?
在Nginx中配置随机触发504 Gateway Timeout错误
当然可以实现,用Nginx内置的split_clients指令就能搞定随机触发504的需求,不需要额外安装第三方模块,官方Docker镜像直接支持。
修改后的完整配置
http { client_max_body_size 100M; client_body_timeout 60s; client_header_timeout 60s; keepalive_timeout 60s; # 定义随机规则:10%的请求标记为触发504 split_clients "${request_id}" $trigger_504 { 10% "yes"; * "no"; } upstream app { server app-1:8080; server app-2:8080; } server { listen 80; location / { # 匹配到标记的请求直接返回504 if ($trigger_504 = "yes") { return 504; } proxy_pass http://app; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 100M; } } }
配置说明
split_clients指令利用每个请求唯一的$request_id作为随机依据,保证触发概率的均匀性。10% "yes"表示10%的请求会被标记为需要触发504,你可以根据测试需求调整这个百分比(比如改成5%就写5% "yes")。- 当请求匹配到
$trigger_504 = yes时,Nginx直接返回504错误,否则正常转发到你的Spring Boot应用。
生效步骤
修改配置后,重启你的Nginx Docker容器即可生效:
docker restart <你的Nginx容器名称>
如果需要针对特定接口或路径测试,只需把if判断逻辑放到对应的location块里就行。
内容的提问来源于stack exchange,提问作者Jesser
相关产品推荐
相关产品推荐

