访问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。成功跳转项目首页。问题解决。
posted @ 2023-03-22 11:01  super_ip  阅读(305)  评论(0编辑  收藏  举报