阿里云SLB漏选“健康检查正常的http状态码”导致url重定向失败问题处理

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 阿里云SLB健康检测状态码选择不正确,导致nginx url重定向的网站访问失败处理流程。
背景:
          一客户将线下电商网站迁移到阿里云上, 公网出口使用阿里云SLB,SLB后端实例为ECS(webserver)web服务使用nginx。后端APP服务器使用了tomcat;tomcat根目录为xxx,应用程序放在其根目录下的一个二级目录AAA,要求公网用户通过域名访问时能直接重定向到二级目录AAA,而不需要手动输入AAA路径来访问网站。
网络示意图如下:

问题出现:
      首先按照正常的配置流程完成后,在浏览器中通过域名加路径的方式能够正常访问,当在nginx上做过url重定向配置以后,再次访问时,诡异的现象出现了
如下:
浏览器中URL路径倒是被重定向成功了,但访问失败了,且报502错误。

问题处理过程:
        好吧,当看到上面出现的502报错时,我们都会立马想到可能是nginx服务有问题,或者是后端的tomcat服务有问题, 那我就一步一步排查了。
1 确认tomcat服务是否正常
  常用方法:
  查看tomcat服务是否开启,端口是否开启,是否有防火墙策略阻止,tomcat配置是否正常
2 确认tomcat正常后在到nginx服务器上,看nginx相关服务是否正常( 在这里折腾得最久了)
  首先检测了nginx的服务正常后,开始怀疑,是重定向配置有问题
重定向配置如下:

3 抓包
       在这里处理的过程中我们换过很多种重定向的方式,但问题依然存在,无赖之下,我们对访问时,在浏览器下抓包,和通过curl 获取访问信息

浏览器抓包,看到第一个状态码是301。
如下图:

curl 抓取,看到的也是301状态码。
如下图:

       通过上面的两种方法抓包来看,301是重定向的状态码, ,访问并没有错误,可为什么网页就是不能正常访问呢,此时我们开始怀疑阿里云的SLB的配置了。

4 阿里云SLB 端口健康检测配置修改
      我们一步步检测阿里云SLB的配置,在端口的健康检测配置项中看到了“正常状态码”配置
如下:

     默认我们都是使用状态码 200 表示健康检测成功,可是我们现在返回的状态码是301,但是我们没有选择,不知道跟这个有没有关系, 于是我们将http_3xx 选中

再次访问网站,终于看到希望了

总结:
        阿里云SLB健康检测,默认情况通过页面返回的状态码200表示后台服务正常,如果网站有做过url重定向,它返回的重定向状态码是3xx 而不是默认的2xx ,此时在配置SLB时,如果在健康检测配置项中不勾选 3xx 那么它会判断为后端服务异常,导致网站访问失败。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
2月前
|
弹性计算 负载均衡
slb健康检查域名
slb健康检查域名
46 8
|
2月前
|
负载均衡 监控 API
slb健康检查路径
slb健康检查路径
51 7
|
2月前
|
弹性计算 负载均衡 网络协议
slb健康检查方法
slb健康检查方法
63 4
|
2月前
|
负载均衡 网络协议 网络安全
SLB-Backend多实例部署配置健康检查
【10月更文挑战第22天】
86 3
|
14天前
【网路原理】——HTTP状态码和Postman使用
状态码(200,404,403,405,500,504,302),Postman下载和使用构造请求
|
1月前
|
弹性计算 负载均衡 监控
slb配置健康检查
slb配置健康检查
33 5
|
1月前
|
弹性计算 负载均衡 监控
slb测试健康检查
slb测试健康检查
42 4
|
2月前
|
弹性计算 负载均衡 应用服务中间件
slb健康检查域名配置
slb健康检查域名配置
39 7
|
2月前
|
负载均衡
slb自定义健康检查路径
slb自定义健康检查路径
31 3
|
2月前
|
负载均衡 安全 网络安全
slb配置健康检查域名
slb配置健康检查域名
38 4