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

502 Bad Gateway 
The proxy server received an invalid response from an upstream server.

本来系统是经过一个SLB转发到后端ECS上的nginx,由咱们本身的Nginx再反向代理了各种服务器,毕竟使用了SLB了就打算去掉nginx。分拆后发现文件服务器的SLB映射好后报了上面的502错误。html

负责阿里云申请的同窗给了一个排查的连接nginx

看了看咱们的系统没有超时、内容过大等问题。并且以前也是SLB->nginx->file server。此次只是去掉了nginx,因此参数上没有什么须要变化的。后端

负责云服务器管理的同窗说咱们后端服务器端口是有问题的,说健康检查有问题,让咱们查服务器是否正常。但咱们自己就是运行的好好的,经过ECS服务器本身的ip访问都是好的。服务器

既然是健康检查出了问题,那么应该是阿里云SLB健康检查机制致使的。负载均衡

健康检查配置 说明
域名和检查路径
(仅限HTTP方式的健康检查)
HTTP健康检查默认由负载均衡系统经过后端ECS内网IP地址向该服务器应用配置的缺省首页发起http head请求。

若是您用来进行健康检查的页面并非应用服务器的缺省首页,须要指定具体的检查路径.

由于有些应用服务器会对请求中的host字段作校验,即要求请求头中必须存在host字段。若是在健康检查中配置了域名,则SLB会将域名配置到host字段中去,反之,若是没有配置域名,SLB则不会在请求中附带host字段,所以健康检查请求就会被服务器拒绝,可能致使健康检查失败。综上缘由,若是您的应用服务器须要校验请求的host字段校,那么则须要配置相关的域名,确保健康检查正常工做。

从这里能够发现SLB与ECS之间若是是HTTP协议的话,须要有一个默认的url能够接收HEAD请求,这样SLB才知道ECS是否还活着,这就是所谓的健康检查。简单点能够理解为心跳检查。阿里云

那咱们的问题缘由很简单就是由于文件服务没有一个可供SLB检查的默认页,因此致使了健康检查失败。解决的方法也简单,给SLB配置一个健康检查的url便可,这样就行了。url

相关文章
相关标签/搜索