Nginx反向代理对后端服务器的容错处理

简介: Nginx作为反向代理的时候,默认采用轮询方式,也就是一替一个的请求上游服务器。我们可以采用了ip_hash策略,使来自同一ip地址的人用同一台服务器响应。

Nginx作为反向代理的时候,默认采用轮询方式,也就是一替一个的请求上游服务器。我们可以采用了ip_hash策略,使来自同一ip地址的人用同一台服务器响应。

如果上游服务器出现错误,比如404,500,等错误,上游服务器仍有一些服务是正常的,部服务不正常。这个时候Nginx并不会把上游服务器当做与故障来处理。

这时用户再次访问nginx的时候,经常出现404,500等错误。

解决方案

    location / {
        proxy_pass http://ssc_backend;
        ...
        proxy_next_upstream error timeout invalid_header http_500 http_404;
        proxy_connect_timeout   2;
   }

在代理上游服务器的的location配置块中,加上上面最后的两句话,或者直接使用
proxy_next_upstream error timeout invalid_header http_500 http_404;
这句话代表,如果Nginx向后端服务器请求的时候,如果出现了错误,超时,指定错误的响应码的时候,再请求上游下一个服务器。

如此可防止上游某服务器只提供部分服务。

个人觉得,在配置反向代理的时候建议加上这句话。

proxy_next_upstream error timeout invalid_header http_500 http_404;

参考

相关文章
|
10月前
|
监控 Java 应用服务中间件
低并发编程|如何用720个请求让后端服务器瘫痪
本次故障因应用启动时未有效校验核心依赖模块初始化异常,导致后续请求处理中抛出无法捕获的错误,引发线程阻塞,最终耗尽HSF线程池,服务不可用。排查发现类初始化失败且异常未被正确处理,结合线程无限等待问题,确认为依赖初始化异常与流处理中断所致。修复措施包括加强启动校验、捕获Throwable及设置合理超时。总结指出,系统稳定性需从细节入手,防微杜渐,避免连锁故障。
低并发编程|如何用720个请求让后端服务器瘫痪
|
9月前
|
缓存 负载均衡 JavaScript
Nginx:高性能Web服务器与反向代理利器
Nginx:高性能Web服务器与反向代理利器
432 110
|
9月前
|
负载均衡 Cloud Native 前端开发
Nginx:高性能的Web服务器与反向代理利器
Nginx:高性能的Web服务器与反向代理利器
361 100
|
9月前
|
缓存 负载均衡 前端开发
Nginx:高性能Web服务器的核心力量
Nginx:高性能Web服务器的核心力量
357 100
|
9月前
|
缓存 负载均衡 前端开发
Nginx:高性能的Web服务器与反向代理利器
Nginx:高性能的Web服务器与反向代理利器
519 99
|
9月前
|
负载均衡 前端开发 安全
Nginx:高性能的Web服务器与反向代理利器
Nginx:高性能的Web服务器与反向代理利器
352 98
|
9月前
|
缓存 负载均衡 前端开发
Nginx:高性能Web服务器的核心引擎
Nginx:高性能Web服务器的核心引擎
417 99
|
9月前
|
缓存 负载均衡 前端开发
Nginx:高性能Web服务器的核心引擎
Nginx:高性能Web服务器的核心引擎
306 47
|
8月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
482 18
|
8月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
797 17