将服务部署到华为云服务器以后,但是在本地依然无法通过服务器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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix