You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:34:54