背景:
          一客户将线下电商网站迁移到阿里云上,公网出口使用阿里云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漏选“健康检查正常的http状态码”导致url重定向失败问题处理的更多相关文章

  1. 阿里云SLB的健康检查配置

    若阿里云SLB健康检查异常,则默认SLB无法访问到后端ECS,也就意味着通过SLB访问后端ECS上部署的服务会报502 gateway. 另一种办法是关闭健康检查(不推荐) 简要说明: SLB通过配置 ...

  2. 阿里云SLB出现502 Bad Gateway 错误排查解决方法

    502 Bad Gateway The proxy server received an invalid response from an upstream server. 原本系统是通过一个SLB转 ...

  3. 记阿里云SLB后配置Nginx反向代理百度地图API的坑

    需求: 百度的原始请求:https://api.map.baidu.com/place/v2/suggestion?query=s&region=sc&city_limit=true& ...

  4. 阿里云SLB负载均衡与使用SSL域名证书

    阿里云SLB负载均衡与使用SSL证书 1.购买两台ECS服务器,这就是后台服务器,在这两个服务器上面部署你的网站,注意网站的端口要一样:比如都是 88. 2.在阿里云控制台的菜单里找到 负载均衡,创建 ...

  5. 阿里云slb实现多域名https

    刚开始接锅,没注意原来站点的https配置在slb上,在服务器上配置一顿操作猛如虎,细细检查一遍,感觉良好,一测试发现不对劲,检查发现原来https配置在阿里云slb上,阿里云还是做得不错的 ,但是现 ...

  6. 阿里云SLB上http强制跳转到https问题处理

    背景: 最近一客户有一个需求,需要将外网所有http访问请求强制跳转到https,公网出口使用阿里云SLB,证书放在SLB上,SLB后端实例为ECS(webserver)web服务使用nginx, 网 ...

  7. 基于阿里云SLB/ESS/EIP/ECS/VPC的同城高可用方案演练

    今天基于阿里云SLB/ESS/EIP/ECS/VPC等产品进行了一次同城高可用方案演练: 基本步骤如下: 1. 在华东1创建VPC网络VPC1,在华东1可用区B和G各创建一个虚拟交换机vpc1_swi ...

  8. 阿里云SLB后Nginx、Tomcat获取真实IP

    一.SLB后Nginx如何获取真实IP 前提:nginx作为slb获取真实ip是使用 http_realip_module,默认一键安装包安装的nginx没有安装这个模块需要重新重新编译nginx并加 ...

  9. [网站公告]3月10日23:00-4:00阿里云SLB升级,会有4-8次连接闪断

    大家好,阿里云将于3月10日23:00-4:00对负载均衡服务(SLB)做升级操作,升级期间SLB网络连接会有约4-8次闪断.由此给您带来麻烦,敬请谅解! 阿里云SLB升级公告内容如下: 尊敬的用户: ...

随机推荐

  1. Java并发程序基础

    Thread.stop() 直接终止线程,并且会立即释放这个线程所持有的锁. Thread.interrupt() 并不会是线程立即退出,而是给线程发送一个通知,告知目标线程,有人希望你退出啦,至于目 ...

  2. Hive中使用LZO

    hive 中使用lzo 1 启动hive 错误Exception in thread "main" java.lang.NoClassDefFoundError: org/apac ...

  3. C#实现异步GET的方法

    using System; using System.Collections.Generic; using System.Configuration; using System.IO; using S ...

  4. 在Azure上部署Sqlserver网络访问不了的问题

    最近在部署Azure虚拟机的时候,一直访问不了网络数据库,一搜资料才知道,Azure默认是不打开入网规则的,需要手动设置. 在 Windows 防火墙中为数据库引擎的默认实例打开 TCP 端口 在“开 ...

  5. PL/SQL 用户自定义子类型

    子类型具有与其基本类型相同的操作,但只有基本类型有效值的子集. 例如,PL/SQL预先定义子类型CHARACTER和INTEGER,如下所示: SUBTYPE CHARACTER IS CHAR; S ...

  6. javascript 六种基本数据类型转换

    javascript 六种基本数据类型转换 1.显式转换 通过手动进行类型转换,Javascript提供了以下转型函数: 转换为数值类型:Number(mix).parseInt(string,rad ...

  7. iOS:常用属性、方法

    前言:一段时间没接触,很容易就忘记以前的知识.专写一篇,供几个月没接触,拿起却忘记了. 0.宏定义.系统相关 0-1).宏定义.规范 变量: //全局变量通常用小写g来提示 int gNumb=0; ...

  8. Vue--- 使用vuex使用流程 1.0

    Vuex 1.安装vuex npm install  -save vuex 2. 引入 创建store文件夹目录 创建 vuex     指挥公共目录    store['state','action ...

  9. mybatis自动生成@Table、@Column、@Id注解

    在pom.xml中添加如下插件以及插件相关的依赖 <build> <plugins> <plugin> <groupId>org.springframe ...

  10. notepad++实现python运行

    一.先确保windows电脑上先安装python解释器 方法参考:https://www.cnblogs.com/hepeilinnow/p/9727922.html 二.打开notepad++,写一 ...