访问nginx报错502日志:failed (13: Permission denied)
1.错误问题
nginx启动成功,但是访问nginx报错502。检查后台项目,使用IP+端口可以正常访问项目的,这说明项目启动成功了。那就是nginx的问题。检查了nginx.conf文件发现配置的反向代理没有问题。最后查看了nginx日志信息,报错信息如下:
13889#13889: *54 connect() to 127.0.0.1:3500 failed (13: Permission denied) while
connecting to upstream, client: 192.168.1.253, server: xxx.xxx.com, request:
"GET /apis/ HTTP/1.1", upstream: "http://127.0.0.1:3500/", host: "xxx.xxx.com"
查看日志路径:
1.源码包离线安装日志查看
日志位置 /usr/local/nginx/logs
2.rpm包安装日志查看
错误日志:/var/log/nginx/error.log
访问日志:/var/log/nginx/access.log
项目部署使用的为rpm安装的,执行命令查看错误日志:
tail -f /var/log/nginx/error.log 动态查看最后输出信息
cat /var/log/nginx/error.log 查看所有内容信息
//error.log错误日志 access.log为访问日志
tail -f /var/log/nginx/error.log 动态查看最后输出信息
cat /var/log/nginx/error.log 查看所有内容信息
//error.log错误日志 access.log为访问日志
2.解决
首先查找该问题,是因为权限不足导致的。
以为是nginx文件夹的问题,把nginx当前目录及目录下所有文件重新授权:
chmod -R 777 nginx
试了下没有效果。
尝试修改nginx.conf文件把第一行的user nginx改为user root。
systemctl reload nginx
重启nginx,没有效果。
最后查找发现此问题的原因是SELinux基于最小权限原则默认拦截了 Nginx 的请求,SELinux 是 Linux 的安全子系统。
解决方法,要么是直接关掉它,要么执行下方指令开启 HTTP 访问
开启 HTTP 访问:
setsebool -P httpd_can_network_connect 1
直接关掉
确认 SELinux 的运行状态
sestatus
临时关闭 SELinux:
setenforce 0
临时启动 SELinux:
setenforce 1
永久关闭/启动:
修改/etc/sysconfig/selinux文件
SELINUX=disabled 后重启系统
关掉SELinux,再次访问nginx。成功跳转项目首页。问题解决。
本文来自博客园,作者:super_ip,转载请注明原文链接:https://www.cnblogs.com/superip/p/17242937.html