阿里雲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

相關文章
相關標籤/搜索