将服务部署到华为云服务器以后,但是在本地依然无法通过服务器IP+端口号访问

一、 检查思路:

  • 确定想要访问的服务器IP是否正确
  • 服务是否正常启动且监听在对应的端口
  • 云服务器的话,安全组端口是否放行
  • 服务器操作系统内的防火墙是否放行

二、具体检查以及设置方法

1.确定要访问IP会否正确

某些情况下,比如说内网机器,IP开头为192.168.x.x、172.16.x.x及10.x.x.x,如果没有在路由器固定IP或者没有设置静态IP的情况下,系统重启可能会导致IP变化,这种情况下,最好是确定下IP是否有变化。
而对于外网的服务器来说,如果是通过域名访问的,可以在命令行ping一下对应的域名或者IP,通过ping的方式可以确定域名是否解析到了正确的IP上,同时也可以确定对应的服务器是否在线,Windows打开CMD或者PowerShell,macOS和Linux打开终端,比如ping本站服务器。

2.确定服务是否正常开启

我使用docker部署的,使用docker ps命令即可查看开启的服务。

 

3.检查云服务器安全组是否放行 

默认的安全组规则,只开放了几个端口(例如22啥的),需要自己手动增加开放的端口。

下边这个图是华为云的安全组设置。

 

 4.服务器系统防火墙是否放行对应的端口

如果到上一步都没什么问题的话,这里建议检查一下服务器系统内部的防火墙是否放行,如果防火墙限制了外部的访问,即使程序正确监听在对应的端口,我们从外部也是无法访问的。
一般来说,如果使用的是云服务厂商的系统模板,防火墙默认是没有开启的,但是如果是使用ISO镜像自己安装的系统,比如说CentOS7,默认是开启防火墙的,且默认除了SSH监听的22端口外,其余默认禁止。
以CentOS7为例,查询端口是否放行:

sudo firewall-cmd --zone=public --query-port=PORT/tcp

其中,80是对应的端口,tcp是协议,如果你不清楚是tcp还是udp,建议使用tcp查询先。
查看防火墙是否在运行:

systemctl status firewalld

关闭防火墙:

systemctl stop firewalld

禁止开机启动:

systemctl disable firewalld

当然,也可以添加对应的端口:

sudo firewall-cmd --zone=public --permanent --add-port=PORT/tcp   #这里PORT的位置写对应端口
sudo firewall-cmd --reload

注意上面的reload命令,如果不执行这句,可能会导致添加的firewall规则不生效。

这里需要注意的是:如果是用docker部署的,使用完防火墙命令以后,需要重启docker才能继续使用docker。使用命令如下:

service docker restart

 

posted @ 2022-12-21 15:43  一直学习的程序小白  阅读(1323)  评论(0编辑  收藏  举报