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

当上游服务器无法响应请求时,便会返回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;
    }
}

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

时间: 2024-08-11 21:50:53

Nginx之优雅处理上游服务器错误码的相关文章

服务器错误码500 501 502 503 504 505 详解

500:500 错误是服务器内部错误 ,而且是程序上错误 为多,可能是你的用户权限的问题导致,或者是数据库连接出现了错误. 501:服务器501服务器501错误是服务器是否具有请求功能. 502:网关出问题(可先清除缓存) 503:cpu占用率大 504:网关出现问题 505:http的版本是不受支持的,一般的浏览器都是1.x的版本

nginx服务器屏蔽上游错误码

平时的开发工作中,有时会遇到脚本权限不对导致403,文件被删除导致404,甚至后端业务异常导致5xx等情况,其实我们可以在服务器加上判断,检测当后端服务出现异常的时候前端返回一个指定的静态文件(也可以是一个动态资源). 这样可以为一些关键业务(html或者动态资源,js等)配置此功能,当后端关键业务出现错误时,也会把一个指定的正确资源返回给用户. 想法自然是在nginx向客户端输出响应头时捕获信息,查看是不是异常,异常则跳转到指定文件 看了下nginx的第三方模块都没有实现这个功能,那还是自己来

Nginx 当上游服务器返回失败时的处理办法

95 Syntax: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 |http_504 | http_403 | http_404 | http_429 | non_idempotent | off ...; Default: proxy_next_upstream error timeout; Context: http, server, location 生效前提:没

HP服务器重装centeos 6.3红屏错误码 Illegal Opcode

公司组装一个服务器要装centos 6.3 .出现一个问题 如果自动引导一切正常.如果手动分区重启后就会,红屏错误码 Illegal Opcode. 去网上问度娘各种不靠谱,有时说要 升级BIOS,从新做raid 了 各种不靠谱.自动引导正常表明绝对是系统安装问题. 试图 google 结果404 好吧 退而求其次 bing  直接bing Illegal Opcode 排除几个度娘过的中文站看到一个英文站 直接 翻译此页 终于找到句 HP ProLiant DL580 G5: Illegal

Nginx之Memcached上游服务器

Memcached Memcached是高性能的分布式内存缓存服务器.一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度.提高可扩展性. Nginx中Memcached模块 在Nginx中, Memcached模块默认是开启的,它负责与memcached守护进程通信.因此,客户端和memcached守护进程之间没有直接通信,也就是说,在这种情况下,Nginx不再是充当反向代理.memcached模块使得Nginx可以使用memcached协议会话,因此,ke

Nginx 反向代理如何连接上游服务器

92 想上游服务器先建立TCP连接 如三次握手 下面指令可以控制握手时间 proxy_next_upstream  指令当出现502可以换个上游服务器 Tcp keepalive 一般都是由进程在操作的  主要降低性能消耗 默认是off proxy_bind 应用场景 一般有两个 当Nginx上有多个IP地址时,不要使用系统默认IP地址 而主动使用某个IP地址 透传IP地址 原文地址:https://www.cnblogs.com/jackey2015/p/10431020.html

http错误码大全

http错误码大全 http://en.wikipedia.org/wiki/List_of_HTTP_status_codes 响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行.响应码分五种类型,由它们的第一位数字表示:1.1xx:信息,请求收到,继续处理2.2xx:成功,行为被成功地接受.理解和采纳3.3xx:重定向,为了完成请求,必须进一步执行的动作4.4xx:客户端错误,请求包含语法错误或者请求无法实现5.5xx:服务器错误,服务器不能实现一种明显无效的请求 下表

UTF-8,Unicode,GBK,希腊字母读法,ASCII码表,HTTP错误码,URL编码表,HTML特殊字符,汉字编码简明对照表

UNICODE,GBK,UTF-8区别 UNICODE,GBK,UTF-8区别    简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与gbk就是不一样的,假设uncode为a040,gbk为b030,而uft-8码,就是把那个值表现的形式.utf-8码完全只针对uncode来组织的,如果GBK要转UTF-8必须先转uncode码,再转utf-8就O

XMPP协议错误码

302 重定向 尽管HTTP规定中包含八种不同代码来表示重定向,Jabber只用了其中一个(用来代替所有的重定向错误).不过Jabber代码302是为以后的功能预留的,目前还没有用到 400 坏请求 Jabber代码400用来通知Jabber客户端,一个请求因为其糟糕的语法不能被识别.例如,当一个Jabber客户端发送一个的订阅请求给它自己活发送一条没有包含"to"属性的消息,Jabber代码400就会产生. 401 未授权的 Jabber代码401用来通知Jabber客户端它们提供的