nginx next_upstream 参数详解和验证

1、错误超时指定状态码配置

 http {

       proxy_next_upstream error http_502  non_idempotent invalid_header   

       proxy_read_timeout 100s; #设置从后端/上游服务器读取响应的超时时间,默认为60s

 }

a、 指定请求应传递到下一个服务器的情况

error:在与服务器建立连接,向其传递请求或读取响应标头时发生错误;

timeout:在与服务器建立连接,向其传递请求或读取响应头时发生超时;

invalid_header:服务器返回空响应或无效响应;

http_500:服务器返回了带有代码500的响应;

http_502:服务器返回具有代码502的响应;

http_503:服务器返回具有代码503的响应;

http_504:服务器返回具有代码504的响应;

http_403:服务器返回带有代码403的响应;

http_404:服务器返回具有代码404的响应;

non_idempotent:通常,如果请求已经被发送到上游服务器(1.9.13),则具有非幂等方法的请求(POST,LOCK,PATCH)不被传递到下一个服务器;启用此选项明确允许重试此类请求;

off:禁用将请求传递到下一个服务器。

b、proxy_next_upstream 默认 错误,超时的情况始终被认为是不成功的尝试,即使它们没有在指令中指定;

c、只有在指令中指定http_500,http_502,http_503和http_504的情况下,才会被视为不成功尝试。 http_403和http_404的情况绝不会被认为是失败的尝试;

d、proxy_next_upstream_timeout 和 proxy_next_upstream_tries 传递到下一个服务器的时间和尝试次数,默认都是关闭的, 建议不要开启, 配置开启后 尝试过程中会暴露后端错误状态码到客户端;

2、后端存活验证

 upstream www {
     server IP:8080 fail_timeout=30s max_fails=2;

     server IP:8080 fail_timeout=30s max_fails=2;

     server IP:8080 fail_timeout=30s max_fails=2;
 }

a、fail_timeout=30s max_fails=2 如果30秒周期内 出现2次连接错误,认为这个服务器不可用,跳转到下一台,此配置主要验证后端 端口是否存活;

3、测试模拟验证

a、请求后端超过 proxy_read_timeout 限制时间,代理日志状态码504  后端服务器日志码499,客户端504

在这里插入图片描述
b、正在处理请求的一台后端 突然挂掉,此时被认为端口不可达,不存活,马上跳转到一台正常的;
在这里插入图片描述

c、如果proxy_next_upstream 配置相应参数 如502 ,后端某一台出现502 马上跳转到正常的一台,后台日志中 有502错误请求,客户端返回正常页面;

在这里插入图片描述

d、如果 后端都报  500 或者502,客户端肯定收到 错误状态码;

在这里插入图片描述
e、后端报403 代理也会报403;

在这里插入图片描述
4、建议使用配置

 http {

       proxy_next_upstream error http_502  non_idempotent invalid_header;

       ###proxy_read_timeout 600s; #设置从后端/上游服务器读取响应的超时时间,默认为60s

 }



 upstream www {
     server IP:8080 fail_timeout=30s max_fails=2;

     server iP:8080 fail_timeout=30s max_fails=2;

     server IP:8080 fail_timeout=30s max_fails=2;
 }

文章归属,轻易科技 分享部门:轻易科技-ops部门

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值