用 nginx反向代理 localhost:80 域名到服務器localhost:8080 端口服務時,訪問出現502 badgateway
原因分析:
1.查看8080端口服務啟動
2.查看錯誤日志:error.log,以centos7.x為例:192.168.10.202 - - [08/May/2023:20:53:43+0800] "GET /jenkinsx/ HTTP/1.1" 502 3693 "-
" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko)Chrome/112.0.0.0 Safari/537.36" "-"沒有相關錯誤,說明nginx反向代理配置沒有出錯,那就可能是后臺jenkins服務發生異常。但是直接訪問,可以正常范圍跟jenkins服務。所以一定是nginx的原因導致出錯。
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(1683551136.630:927): avc:
denied { name_connect } for pid=25015
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 permissive=0
4.使用以下指令查看selinux配置:#getsebool httpd_can_network_connect#httpd_can_network_connect --> offSELinux配置將httpd網絡連接關閉,所以很自然將其啟用即可:setsebool -P httpd_can_network_connect 1再次訪問,即可正常訪問,當然,直接關閉
SELinux也可以訪問,但是不建議這樣解決問題。