码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx之优雅处理上游服务器错误码

时间:2019-04-01 09:13:56      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:code   本地   back   页面   www   暂停   响应   ack   down   

当上游服务器无法响应请求时,便会返回50x状态码,这里我们可以进行错误优化处理,会显示的更加友好。

示例如下:

# 方法1:从本地磁盘提供错误页面
server {
    error_page 500 502 503 504 /50x.html;
    location =/50x.html {
        root html;
}

# 方法2:从外部网站提供错误页面
server {
    error_page 500 http://www.test.com/50x.html;
}

若这里为代理到一组上游服务器的话,也可以定义一个备用服务器,以便于其他服务器不再处理请求时暂时处理请求(适用于流量小的站点)。

upstream servers {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    server 127.0.0.1:8082 down;     # 下线
    server 127.0.0.1:8083 backup;   # 备份 
}
server {
    location / {
        error_page 500 502 503 504 =@fallback;
        proxy_pass http://servers;
    }
    location @fallback {
        proxy_pass http://127.0.0.1:8084;
    }
}

upstream模块还能够为每一个上游服务器设置状态值,这些状态值的含义分别例如以下:

  • down 表示该server临时不參与负载;
  • weight 默认值为1,当weight越大,负载的权重就越大;
  • max_fails 表示同时请求失败的次数为1,当超过最大次数时,返回proxy_next_upstream 模块定义的错误.
  • fail_timeout 表示max_fails次失败后,暂停的时间;
  • backup 表示当其他全部的非backup机器down或者忙的时候,才会去请求backup机器,所以这台机器压力会最轻。

扩展:Nginx也支持处理error_page 指定400或更大的错误代码的处理,如下示例:

server {
    proxy_intercept_errors on;       # 开启该指令
    error_page 400 403 404 /40x.html;

            location = /40x.html {
        root html;
    }
}

Nginx之优雅处理上游服务器错误码

标签:code   本地   back   页面   www   暂停   响应   ack   down   

原文地址:https://blog.51cto.com/10316297/2371996

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!