问题描述
Nginx 访问CentOS或者红帽子服务器ip时候出现如下错误
[error] 5932#0: *15 connect() failed (113: No route to host) while connecting to upstream
分析原因
发生该错误的根本原因是防火墙白名单端口没有开启。
解决办法
解决办法1
直接关闭防火墙(不推荐)
该种方法应该是有一部分人这么操作,会强制关闭防火墙,对于安全性很明显这是不好的做法,如果你喜欢就上来关闭操作防火墙可以直接按照如下命令关闭防火墙。
# 1:查看防火状态
systemctl status firewalld
# 2:暂时关闭防火墙
systemctl stop firewalld
# 3:永久关闭防火墙
systemctl disable firewalld
# 4:重启防火墙
systemctl enable firewalld
解决方法2
增加白名单端口到防火墙(推荐)
# 依次执行命令,打开80(http)和443(https)端口
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --reload # 注意:添加端口后,必须用命令firewall-cmd --reload重新加载一遍才会生效
sudo firewall-cmd --list-port # 查看已经添加到白名单端口号
再次通过网页访问nginx所在的ip地址,可以看到访问欢迎页成功
扩展
在防火墙操作中,你同样可以利用方法2添加数据库端口1521、3306或者其他想要添加的端口到白名单中
sudo firewall-cmd --permanent --zone=public --add-port=1521/tcp
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
另外打开80或者443端口的时候也可以利用服务来添加
# 添加http和https服务到防火墙白名单中
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
# 查看已经添加到白名单端口号或者服务
sudo firewall-cmd --list-port # 查看端口
sudo firewall-cmd --list-service # 查看服务