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

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

负责阿里云申请的同学给了一个排查的链接

看了看我们的系统没有超时、内容过大等问题。而且之前也是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即可,这样就好了。

最新文章

  1. 普林斯顿算法课第五周作业_KdTree
  2. python之路八
  3. 【使用Unity开发Windows Phone上的2D游戏】(2)初识工具
  4. Android 开发 --Unable to resolve target 'android-19'
  5. PostgreSQL 对字段大小写敏感
  6. z/os上的tar和gzip
  7. [转]linux系统磁盘分区之parted
  8. POJ1734 - Sightseeing trip
  9. (转载)使用ADOConnet.BeginTrans后,出现错误提示:无法在此会话中启动更多的事务?
  10. TCP HTTP 详细内存分析 & time_wait setsockopt
  11. Project_2007关键
  12. 理解C++ lvalue与rvalue
  13. RecyclerView 实现横向滚动效果
  14. c/c++ 网络编程 UDP 改变网卡的硬件地址
  15. SHELL脚本学习-自动生成AWR报告
  16. 2017-05~06 温故而知新--NodeJs书摘(一)
  17. Tomcat是什么:Tomcat与Java技、Tomcat与Web应用以及Tomcat基本框架及相关配置
  18. R 的内部机制
  19. JedisCluster中应用的Apache Commons Pool对象池技术
  20. DAY5敏捷冲刺

热门文章

  1. 附录D——自动微分(Autodiff)
  2. 优雅地实现CSS Animation delay
  3. mysql查询当天所有数据sql语句
  4. Vector简单介绍
  5. js中闭包来实现bind函数的一段代码的分析
  6. js中的对象创建与继承
  7. VMWare Workstation虚拟机 安装Centos7 图文指南
  8. 基于opencv3.0和下的条形码与二维码识别
  9. nsq源码阅读笔记之nsqd(二)——Topic
  10. java.lang.IllegalArgumentException异常 配置文件的问题