用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
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。