• 阿里云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 那么它会判断为后端服务异常,导致网站访问失败。
  • 相关阅读:
    laravel在控制器中动态创建数据表
    laravel模型关联:
    laravel的firstOrCreate的作用:先查找表,如果有就输出数据,如果没有就插入数据
    创建一个自定义颜色IRgbColor
    tnt_esri.dat Arcgis8.1安装license
    arcgis desktop 10.1 license manager无法启动问题解决
    解决ArcGIS安装之后出现的Windows installer configures问题
    Arcgis 10.1安装
    Arcgis10安装说明
    ARCGIS9.3安装说明
  • 原文地址:https://www.cnblogs.com/dtstack/p/10097283.html
Copyright © 2020-2023  润新知