在后备路由中将状态代码从502更改为503

时间:2017-12-07 16:19:42

标签: nginx

我使用nginx作为我项目的代理服务器。如果我的应用离线进行维护,我希望显示后备页面。这到目前为止工作正常。唯一的问题是,服务器响应带有502错误代码 - 这是有道理的。如何在我的后备中将其更改为503路线?

server {
    listen 80;
    error_page 500 502 503 504 @fallback;

   location / {
     proxy_pass http://0.0.0.0:3000;
   }

   location @fallback {
       // I need this to answer with a status of 503 instead of a 502
       root /srv/my-project/static;
       try_files /fallback.html;
   }

}

2 个答案:

答案 0 :(得分:4)

您可以设置错误页面nginx error page

并设置类似

的东西

error_page 502 =503 /maintenance.html

或类似

    location / {
        error_page 502 =503 /maintenance.html;
        include proxy_params;
        proxy_pass http://unix:/var/run/my.sock;
    }
    location /maintenance.html {
        return 503;
    }

来源:How can I make Nginx return HTTP 503 when my proxied app server is down?

答案 1 :(得分:1)

谢谢@shalbafzadeh的回答,这解决了我。

在我非常特殊的情况下,解决方案看起来像这样:

server {
    listen 80;
    error_page 502 =503 @fallback; <-- THIS

   location / {
     proxy_pass http://0.0.0.0:3000;
   }

   location @fallback {
       root /srv/my-project/static;
       try_files /fallback.html;
   }

}