問(wèn)題描述
首先簡(jiǎn)單說(shuō)下服務(wù)器架構(gòu)颗搂,前端一臺(tái)【負(fù)載均衡】,使用 Nginx 實(shí)現(xiàn)幕垦,并在此上面安裝了 Redis丢氢,好為 Tomcat 7 提供 session 共享服務(wù)傅联。后端兩臺(tái) Web 服務(wù)器,使用的是 Tomcat 7【尾欤現(xiàn)在已經(jīng)實(shí)現(xiàn)了簡(jiǎn)單的 負(fù)載均衡 與 session 共享蒸走。
但問(wèn)題是,后端的 Tomcat 的端口只有改為 80 時(shí)前端的 Nginx 才能正常提供負(fù)載均衡稍浆,除此端口(即 80)外任何一個(gè)端口都會(huì)使 Nginx 報(bào) 502 Bad Gateway 錯(cuò)誤载碌,如 圖1 所示:
圖1 - Nginx 報(bào) 502 Bad Gateway
解決辦法
后經(jīng)查找發(fā)現(xiàn)原來(lái)是 Nginx 主機(jī)的 SELinux 服務(wù)限制了其(即 Nginx)使用 http 訪(fǎng)問(wèn)權(quán)限引起的,輸入以下命令即可解決此問(wèn)題:
setsebool -P httpd_can_network_connect 1? ? ? ? ? # “1”為開(kāi)啟衅枫,“0”為關(guān)閉
注:此命令執(zhí)行時(shí)可能需要一些時(shí)間嫁艇,請(qǐng)耐心等待其執(zhí)行完成。權(quán)限開(kāi)啟后可能還要重啟一下 Nginx 服務(wù)才會(huì)生效弦撩。