1、确保项目已在云主机上正确运行(监听正确的端口)。
2、确保网络是通的(安全组/防火墙放行,域名解析正确)。
您可以遵循下图的流程来排查和解决问题:
flowchart TD A[访问云主机项目失败] --> B{项目在主机上运行正常吗?} B -- 否 --> C[参考步骤一:启动项目服务] B -- 是 --> D{网络畅通吗?} subgraph D [网络连通性检查] direction LR D1[安全组放行端口] D2[防火墙放行端口] D3[域名解析正确] end D -- 否 --> E[参考步骤二:排查网络问题] D -- 是 --> F[成功访问] C --> G[完成部署后再次测试] E --> F
步骤一:确保项目已在云主机上运行并监听端口
您需要通过 SSH 连接到您的云服务器,然后进行以下操作:
1、连接到您的云主机
# 使用以下命令,将 your-username 和 your-server-ip 替换为你的实际信息 ssh your-username@your-server-ip # ssh root@123.123.123.123
系统会提示您输入密码或使用密钥进行认证。
2、确认您的项目服务正在运行
这取决于您的项目类型,例如
Web项目(如Node.js, Python Django/Flask, Java SpringBoot): 通常使用pm2
,systemd
来管理进程,或者直接通过python3 app.py
运行,使用ps
,systemctl status
或pm2 list
命令检查。
Docker容器: 使用docker ps
命令查看容器是否在运行。
Nginx/Apache: 使用systemctl status nginx
检查服务状态。
3、确认项目监听的端口
* 您的项目需要在一个端口上运行(Node.js默认可能是3000,Flask默认是5000,您自定义的可能是8080等)。
使用netstat
或ss
命令查看监听中的端口
# 常用的检查命令 netstat -tunlp | grep :端口号 # 或者 ss -tunlp | grep :端口号 # 查看3000端口是否被监听:ss -tunlp | grep :3000
* 如果发现项目没有运行,请根据项目类型启动它。
即使项目在服务器上运行了,外界也无法直接访问,因为云主机有安全屏障。
1、云服务商的安全组(Security Group)配置
* 这是最常见的问题!安全组相当于云服务器的虚拟防火墙。
操作步骤(以阿里云、腾讯云等常见厂商为例)
* 登录到您的云服务商管理控制台。
* 找到您的云服务器(ECS/CVM)实例。
* 进入该实例的安全组配置页面。
添加一条入方向(Inbound) 规则
类型自定义或选择「HTTP」、「HTTPS」或「自定义 TCP」
端口范围填写您项目监听的端口(例如3000
),如果是网站,通常需要放行80
(HTTP)和443
(HTTPS)端口。
授权对象0.0.0.0/0
表示允许所有IP访问(出于安全考虑,生产环境建议设置为特定IP),如果需要限制访问来源,可以设置为你的IP地址。
保存规则并应用到您的实例。
非常重要修改安全组规则通常是立即生效的。
2、操作系统内部的防火墙
* 如果安全组设置无误,还需要检查云主机系统内部的防火墙(如iptables
或firewalld
)是否放行了端口。
CentOS/RHEL (使用 firewalld)
# 查看防火墙状态 systemctl status firewalld # 如果防火墙开启,添加端口(例如3000) firewall-cmd --zone=public --add-port=3000/tcp --permanent # 重启防火墙使配置生效 firewall-cmd --reload
Ubuntu/Debian (通常使用 ufw)
# 查看状态 ufw status # 允许端口(例如3000) ufw allow 3000
完成以上配置后,您现在可以通过浏览器或工具访问您的项目了。
1、通过 IP 地址访问
如果您的项目是 Web 服务,直接在浏览器地址栏输入
http://<您的云服务器公网IP>:<项目端口号>
例如http://123.123.123.123:3000
如果项目运行在默认的80端口(HTTP),只需输入IPhttp://123.123.123.123
如果项目运行在默认的443端口(HTTPS),输入https://123.123.123.123
2、通过域名访问(如果你有域名)
* 您需要将您的域名解析到云服务器的公网 IP(在您的域名注册商或DNS服务商那里添加一条A
记录)。
* 然后在浏览器中访问您的域名即可,例如http://your-domain.com:3000
。
进阶为了去掉端口号,通常使用Nginx 或Apache 作为反向代理,这样用户只需访问http://your-domain.com
,Nginx 会自动将请求转发给您内部运行在3000
端口的项目。
如果仍然无法访问,请按以下清单逐一核对:
1、 [ ]项目运行:通过ssh
连上服务器,用curl http://localhost:端口号
测试一下,在服务器内部能否访问,如果内部都访问不了,说明项目没启动或配置错误。
2、 [ ]安全组:云控制台的安全组规则是否已添加并应用到正确实例?端口和授权对象(0.0.0.0/0
)是否正确?
3、 [ ]系统防火墙:服务器内部的防火墙是否放行了该端口?
4、 [ ]端口号:访问时输入的IP和端口号是否完全正确?
5、 [ ]云服务商额外因素:有些云厂商(如AWS)可能有网络ACL,或者某些优惠套餐需要备案后才能开放80/443端口。
按照以上步骤,99% 的访问问题都可以解决,祝您成功!
文章摘自:https://idc.huochengrm.cn/zj/14927.html
评论