您好,登錄后才能下訂單哦!
用nginx反向代理 localhost:80 域名到服務器 localhost:8080 端口服務時,訪問出現502 bad gateway
原因分析:
1.查看8080端口服務啟動
2.查看錯誤日志:error.log,以centos7.x為例,更改配置路徑為:web.dev.xxx.access.ssl.log:
xxx - - [22/Oct/2019:10:24:04 +0800] "GET /test HTTP/1.1" 502 3693 "-" "curl/7.29.0" "-"
沒有相關錯誤,說明nginx反向代理配置沒有出錯,那就可能是tomcat服務發生異常
3.查看SELinux日志 /var/log/audit/audit.log
發現 nginx 轉發 8080端口被拒絕
SELinux缺省會通過Linux審計系統auditd將日志寫在/var/log/audit/audit.log內,而該服務缺省為啟用的;假若auditd長駐程序并未運行,信息將會被寫進/var/log/messages。
type=AVC msg=audit(1571711734.564:78781): avc: denied { name_connect } for pid=22418 comm="nginx" dest=8080 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_cache_port_t:s0 tclass=tcp_socket
4.使用以下指令查看selinux配置:
#getsebool httpd_can_network_connect
#httpd_can_network_connect --> off
SELinux配置將httpd網絡連接關閉,所以很自然將其啟用即可:
setsebool -P httpd_can_network_connect 1
再次訪問,即可正常訪問,當然,直接關閉SELinux也可以訪問,但是不建議這樣解決問題。
nginx經常出現nginx 502 bad gateway錯誤,查看日志是最好的辦法,從源頭解決問題,改了nginx配置或者調優nginx,不能馬上看到效果,所以最好臨時寫個腳本,監控網站的狀態碼,一旦出現502錯誤,就重啟下nginx,然后一邊著手從根源上解決nginx 502 bad gateway,寫個小腳本,就當時自動化運維的工具吧。腳本功能可以自己修改,日志/data/scripts/check502.log必須手動創建,位置可以自己定義,腳本內容如下:
最主要還是命令:curl --head https://blog.51cto.com/13696145 2>&1 |awk 'NR==4'| awk '{print $2}' 查看當前的狀態碼
vim /data/scripts/check_502.sh
#!/bin/bash
#day=`date +%F_%r`
day=`date +%F_%T`
STATE=`curl --head https://blog.51cto.com/13696145 2>&1 |awk 'NR==4'| awk '{print $2}'`
if [ "$STATE" -eq "502" ]; then
pkill -9 nginx && sleep 1 && /usr/local/nginx/sbin/nginx
echo $day >>/data/scripts/check502.log
echo "nginx 已重啟" >> /data/scripts/check502.log
echo $day take a check !!! >> /data/scripts/check502.log
fi
加入定時任務crontab -e,每2分鐘執行一次檢查;
*/2 * * * * /bin/bash -x /data/scripts/check_502.sh
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。