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 那么它会判断为后端服务异常,导致网站访问失败。
  • 相关阅读:
    2021,6,10 xjzx 模拟考试
    平衡树(二)——Treap
    AtCoder Beginner Contest 204 A-E简要题解
    POJ 2311 Cutting Game 题解
    Codeforces 990G GCD Counting 题解
    NOI2021 SDPTT D2T1 我已经完全理解了 DFS 序线段树 题解
    第三届山东省青少年创意编程与智能设计大赛总结
    Luogu P6042 「ACOI2020」学园祭 题解
    联合省选2021 游记
    Codeforces 1498E Two Houses 题解 —— 如何用结论吊打标算
  • 原文地址:https://www.cnblogs.com/dtstack/p/10097283.html
Copyright © 2011-2022 走看看