背景:
          一客户将线下电商网站迁移到阿里云上,公网出口使用阿里云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. 用$(this)选择其下带有class的子元素

    $(this).find('.son').removeClass("disn")

  2. 学习Promise笔记

    什么是Promise? MDN对Promise的定义:Promise对象用于异步操作,它表示一个尚未完成且预计在未来完成的异步操作. 在学习Promise之前得先了解同步与异步:JavaScript的 ...

  3. python的格式化输出(format,%)

    皇城PK Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了format这个格式化字符串的方法之后,我认为%还是format这根本就不算个问 ...

  4. vue.js中的slot

    vue.js 中的 slot 一.slot 的作用 调用组件的时候,对于数据,我们会用props将数据从父组件传至子组件.但是,如果从父组件到子组件,单纯是页面局部渲染的改变,slot会更合适. 二. ...

  5. JavaScript实现快速排序(Quicksort)

    目前,最常见的排序算法大概有七八种,其中"快速排序"(Quicksort)使用得最广泛,速度也较快.它是图灵奖得主 东尼·霍尔(C. A. R. Hoare)于1960时提出来的. ...

  6. 图片懒加载 jquery.lazyload

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  7. html5 手风琴菜单

    因为项目需要,现在需要做个手风琴菜单,于是自己就瞎整了一下,所用只是less.js  javascript  jquery效果如图: 具体代码如下: <!DOCTYPE html> < ...

  8. 【基于不同设备厂商在处理vlan之间通信配置例子】

    H3C: Dot1q子接口实现vlan之间的通信 一:根据项目需求搭建好拓扑图如下: 二:配置 HUAWEI: CISCO

  9. JS数组&对象遍历

    遍历的总结,经常用到的,希望帮助你我成长. JS数组遍历: 1,普通for循环 var arr = [1,2,3,4,9]; for ( var i = 0; i <arr.length; i+ ...

  10. SQL优化之语句优化

    昨天与大家分享了SQL优化中的索引优化,今天给大家聊一下,在开发过程中高质量的代码也是会带来优化的 网上关于SQL优化的教程很多,但是比较杂乱.整理了一下,写出来跟大家分享一下,其中有错误和不足的地方 ...