在阿里云上部署网站、数据库或接口服务,新手最容易卡在端口上。服务明明已经启动,浏览器打不开,远程连接一直超时。这种情况多数出在安全组或服务器内部防火墙没有放行对应端口。下面按实际排查的顺序,把阿里云配置端口的几个关键位置讲清楚。

先搞清楚流量经过的两道关
服务器上的每个服务都监听一个端口,HTTP 默认是 80,HTTPS 是 443,SSH 登录是 22。外部请求要到达服务,得先过阿里云的安全组,它在云平台层面过滤流量。流量进入服务器后,还要过操作系统自带的防火墙,比如 CentOS 或 Alibaba Cloud Linux 上的 firewalld,Ubuntu 上的 ufw。两处都放行,外部才能访问。
很多人只改了其中一处,然后以为配置没生效,排查时就在这里绕了很多弯路。
在控制台添加安全组规则
举个例子。小王在 ECS 上部署了一个 Node.js 应用,监听 3000 端口,公网却访问不了。他的排查过程大致如下:
- 登录阿里云控制台,进入“云服务器 ECS”,找到对应实例。
- 在实例详情页打开“安全组”,进入安全组配置页面。
- 切换到“入方向”,点击“手动添加”。
- 授权策略选“允许”,协议选 TCP,端口范围填 3000/3000。授权对象可以先填 0.0.0.0/0 临时测试。
- 保存后一般几秒内生效。如果还不通,先别急着改代码,回头看看规则是不是加到了正确的安全组上。
0.0.0.0/0 的意思是任意 IP 都能访问,测试时用用没问题,但别带到线上。SSH 的 22 端口、数据库的 3306 端口,这类敏感端口应该只对可信的 IP 段开放。很多服务器被扫描、被爆破,就是因为这些端口一直对全网敞开。
在服务器内部放行端口
安全组放行了,系统防火墙还拦着,外部照样连不上。在 CentOS 或 Alibaba Cloud Linux 上,用 firewalld 操作:
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
Ubuntu 上使用 ufw:
sudo ufw allow 3000/tcp
sudo ufw status
加了 –permanent 之后还要执行 –reload,否则规则只在内存里,不一定保留下来,这一点很容易忘。配置完成后,可以在本机用 nc -zv 公网IP 3000 测试,返回连接成功,说明整条链路已经通了。
常见问题怎么查
服务启动了,但端口没有监听
在服务器上执行 ss -tlnp 或 netstat -tlnp,确认服务确实监听在目标端口上。这里常见的坑是应用默认只绑定 127.0.0.1,本机能访问,外部却进不来。遇到这种情况,要去改应用的监听地址,让它绑定到 0.0.0.0。
端口被占用
80 或 443 如果已经被 Nginx 之类的服务占用,新服务就会启动失败。用 lsof -i :端口号 找到占用进程,然后决定是换端口,还是停掉原来的服务。别直接杀进程,先确认它是不是别的业务在用。
改了配置却没生效
安全组规则通常即时生效。如果前面挂了负载均衡或 NAT 网关,问题往往出在这里:转发规则没配,或者后端服务器的端口映射不对。这种情况只看 ECS 本机的安全组已经不够,要把整条链路上的每一环都检查一遍。
几条实用建议
- 只开放业务真正需要的端口,不用的规则定期清理,规则越多,后面越难排查。
- SSH 端口可以换一个非默认值,同时只用密钥登录,别再依赖密码。
- 数据库端口不要直接暴露在公网,应用和数据库在同一个 VPC 内时,通过内网访问即可。
- 0.0.0.0/0 这类宽泛规则,上线前一定要收窄到实际需要的 IP 段。
阿里云端口配置本身并不复杂,真正容易出错的是安全组和系统防火墙之间的层级关系。按“服务监听、系统放行、安全组放行、外部测试”的顺序逐步检查,大多数问题都能很快定位。