參考自:http://blog.codingplayboy.com/2017/05/22/nginx-502-bad-gateway/
用nginx反向代理 localhost:80 域名到服務(wù)器 localhost:8080 端口服務(wù)時(shí),訪問(wèn)出現(xiàn)502 bad gateway
原因分析:
1. 經(jīng)驗(yàn)證8080端口服務(wù)啟動(dòng)
2. 查看錯(cuò)誤日志:error.log,以centos7為例,默認(rèn)路徑為:/var/log/nginx/error.log:
::1 - - [27/Nov/2018:14:15:51 +0800] "GET /test HTTP/1.1" 502 3693 "-" "curl/7.29.0" "-"
沒(méi)有相關(guān)錯(cuò)誤,說(shuō)明nginx反向代理配置沒(méi)有出錯(cuò),那就可能是httpd服務(wù)發(fā)生異常
3. 查看SELinux日志 /var/log/audit/audit.log
發(fā)現(xiàn) nginx 轉(zhuǎn)發(fā) 8080端口被拒絕
SELinux缺省會(huì)通過(guò)Linux審計(jì)系統(tǒng)auditd將日志寫在/var/log/audit/audit.log內(nèi),而該服務(wù)缺省為啟用的;假若auditd長(zhǎng)駐程序并未運(yùn)行,信息將會(huì)被寫進(jìn)/var/log/messages
type=AVC msg=audit(1543286075.634:78781): avc: denied { name_connect } for pid=3232 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網(wǎng)絡(luò)連接關(guān)閉,所以很自然將其啟用即可:
setsebool -P httpd_can_network_connect 1
再次訪問(wèn),即可正常訪問(wèn),當(dāng)然,直接關(guān)閉SELinux也可以訪問(wèn),但是不建議這樣解決問(wèn)題。