zoukankan      html  css  js  c++  java
  • 阿里云SLB漏选“健康检查正常的http状态码”导致url重定向失败问题处理

    背景:
              一客户将线下电商网站迁移到阿里云上,公网出口使用阿里云SLB,SLB后端实例为ECS(webserver)web服务使用nginx。后端APP服务器使用了tomcat;tomcat根目录为xxx,应用程序放在其根目录下的一个二级目录AAA,要求公网用户通过域名访问时能直接重定向到二级目录AAA,而不需要手动输入AAA路径来访问网站。
    网络示意图如下:
    f51c981085cbf3ed29a554b4b06caa1513fd6acd
    问题出现:
    首先按照正常的配置流程完成后,在浏览器中通过域名加路径的方式能够正常访问,当在nginx上做过url重定向配置以后,再次访问时,诡异的现象出现了
    如下:
    浏览器中URL路径倒是被重定向成功了,但访问失败了,且报502错误。
    9e6b3e31c8498b468a9d40216611a3bff4588f7d
    问题处理过程:
    好吧,当看到上面出现的502报错时,我们都会立马想到可能是nginx服务有问题,或者是后端的tomcat服务有问题,那我就一步一步排查了。
    1 确认tomcat服务是否正常
      常用方法:
      查看tomcat服务是否开启,端口是否开启,是否有防火墙策略阻止,tomcat配置是否正常
    2 确认tomcat正常后在到nginx服务器上,看nginx相关服务是否正常( 在这里折腾得最久了)
      首先检测了nginx的服务正常后,开始怀疑,是重定向配置有问题
    重定向配置如下:
     
    06ed89d8f0179a5e25c6cdaa09429df627f33428
    3 抓包
    在这里处理的过程中我们换过很多种重定向的方式,但问题依然存在,无赖之下,我们对访问时,在浏览器下抓包,和通过curl 获取访问信息
     
    浏览器抓包,看到第一个状态码是301。
    如下图:
    82002c183b311d1ccaa3ea3d34e709b1cdbae98b
    curl 抓取,看到的也是301状态码。
    如下图:
    9e5304a885a39b21696051efa86876385c5bb5ce
    通过上面的两种方法抓包来看,301是重定向的状态码,,访问并没有错误,可为什么网页就是不能正常访问呢,此时我们开始怀疑阿里云的SLB的配置了。
     
    4 阿里云SLB 端口健康检测配置修改
          我们一步步检测阿里云SLB的配置,在端口的健康检测配置项中看到了“正常状态码”配置
    如下:
    758e6564767b71c6624f412414362b7c92c22887
         默认我们都是使用状态码 200 表示健康检测成功,可是我们现在返回的状态码是301,但是我们没有选择,不知道跟这个有没有关系,于是我们将http_3xx 选中
    6a7168c19a3bcc9f99d0a802f40d5ed4c63bf2f1
    再次访问网站,终于看到希望了
     
    总结:
            阿里云SLB健康检测,默认情况通过页面返回的状态码200表示后台服务正常,如果网站有做过url重定向,它返回的重定向状态码是3xx 而不是默认的2xx ,此时在配置SLB时,如果在健康检测配置项中不勾选 3xx 那么它会判断为后端服务异常,导致网站访问失败。
  • 相关阅读:
    医学-药物-未分类-糠酸莫米松鼻喷雾剂
    Delphi 错误提示: Unknown picture file extension (.jpg)
    SQL SERVER 两表比对更新、插入字段写法
    医学-药物-非激素类抗炎药-孟鲁司特钠片
    医学-药物-分类说明-抗组胺药
    医学-药物-抗组胺药-富马酸酮替芬片
    Delphi 判断字符串是否是数字、大小字母、小写字母、纯字母组成
    医学-药物-未分类-复方甲氧那明胶囊
    医学-药物-分类说明-消炎药
    计算机语言,学习心态
  • 原文地址:https://www.cnblogs.com/dtstack/p/10097283.html
Copyright © 2011-2022 走看看