在Nginx中模拟随机504错误

问题描述 投票:0回答:1

有没有办法可以向 Nginx 配置中添加随机导致 504 网关超时错误的内容?

我当前的Nginx开发配置是:

http {
   
   client_max_body_size 100M;
   client_body_timeout 60s;
   client_header_timeout 60s;
   keepalive_timeout 60s;

   upstream app {
      server app-1:8080;
      server app-2:8080;
   }

   server {
      listen 80;
      location / {

         # want to enter something like
         # if (random() < 10) {
         #   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;
      }
   }
   
}

我的问题是,在生产中,Nginx 和我的 Kotlin Spring Boot Web 应用程序之间偶尔会出现 504 网关超时错误,我想在开发中测试正在运行的代码,以在出现这些错误时处理这些错误。但在我的开发模式下,Nginx 在 docker 容器中运行,它只是正常工作,我还没有遇到 504 网关错误。

因此,虽然我确实想修复 504,但我也希望有一种方法可以时不时地模拟随机的 Nginx 504 响应。

nginx nginx-reverse-proxy http-status-code-504
1个回答
0
投票

504超时状态的简单解释:

504网关超时错误表示服务器没有从其需要访问的上游服务器收到及时响应以完成请求。

您可以简单地停止正在开发中运行的服务器并向 Nginx 发出请求。它不会得到及时响应并返回 504。

您还可以缩短默认超时时间(60 秒),这样您就不必等待太久。例如30秒

http{
   ...
   proxy_read_timeout 30;
   proxy_connect_timeout 30;
   proxy_send_timeout 30;
   ...
}
© www.soinside.com 2019 - 2024. All rights reserved.