一、问题现象
nginx部署正常,运行正常。
后端tomcat程序部署正常,运行正常。
通过nginx反向代理后出现如下报错。
nginx配置:
server {
listen 80;
listen [::]:80;
server_name web;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
location ^~/api {
proxy_pass http://192.168.0.204:2828/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
前端页面报错
一直报 502 网关错误
后台日志报错
按照日常的运维经验,这种情况不应该出现,nginx反向代理正常,tomcat程序正常,应该通过nginx访问tomcat是正常的,但是就是出现了以上报错。
二、排查过程
页面报502,这样的报错无法定位问题。
查询nginx的error日志,一般路径在/var/log/nginx/error.log,可以通过nginx的配置文件/etc/nginx/nginx.conf查看error日志路径。
在web端访问网页,tail -f /var/log/nginx/error.log 命令打印日志,发现报错为2024/04/24 03:26:49 [crit] 29714#29714: *2 connect() to 192.168.0.204:2828 failed (13: Permission denied
三、解决方案
关闭selinux
# 临时关闭SELinux
sudo setenforce 0
# 永久关闭SELinux,系统重启SELinu任然关闭
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config