在使用云服务器搭建网站、Docker 项目、数据库或者其他网络服务时,经常会遇到这样的问题:
Connection refused
或者:
Connection timed out
看起来都是“连接不上服务器”,但实际上两者代表的问题并不完全一样。
如果能够先判断是哪一种错误,再按照正确的顺序排查,通常可以很快找到原因,而不用反复重装程序或者修改服务器配置。

一、Connection refused 是什么意思?
Connection refused 通常可以理解为:
服务器能够访问,但目标端口当前没有正常接受连接。
例如:
curl: (7) Failed to connect to 1.2.3.4 port 8080: Connection refused
常见原因包括:
- 程序没有启动
- 程序已经异常退出
- 服务没有监听目标端口
- 程序只监听了
127.0.0.1 - Docker 没有正确映射端口
- 防火墙主动拒绝了连接
这种情况下,一般优先检查服务器内部的程序和端口监听状态。
二、Connection timed out 是什么意思?
如果提示:
Connection timed out
通常意味着客户端发出了连接请求,但是在规定时间内没有收到有效响应。
这种情况更应该重点排查:
- 云服务器安全组
- Linux 系统防火墙
- 网络路由
- 上游网络策略
- IP 是否能够正常访问
- 端口是否被中间网络设备过滤
简单来说:
Connection refused
更偏向:服务器到了,但服务没有正常接收连接
Connection timed out
更偏向:请求可能根本没有成功到达目标服务
不过这只是排查方向,并不能仅凭一条错误信息百分之百确定具体原因。
三、第一步:确认程序有没有启动
如果知道对应服务名称,可以先查看运行状态。
例如 Nginx:
systemctl status nginx
Docker:
systemctl status docker
SSH:
systemctl status ssh
部分系统中 SSH 服务名称可能是:
systemctl status sshd
如果看到:
inactive
failed
dead
说明程序本身可能没有正常运行。
可以进一步查看日志:
journalctl -u nginx -n 100
把 nginx 换成自己的服务名称即可。
四、检查服务器到底监听了哪些端口
这是排查端口问题非常重要的一步。
执行:
ss -lntup
例如我们需要检查 8080:
ss -lntup | grep 8080
如果没有任何输出,通常说明目前没有程序监听这个端口。
如果看到:
127.0.0.1:8080
说明程序只监听本机。
外部电脑访问:
服务器IP:8080
通常无法直接连接。
如果需要允许外部访问,一般应该根据程序配置监听:
0.0.0.0:8080
或者指定服务器网卡地址。
修改监听地址时,需要根据实际程序的配置文件进行调整,并不是所有软件的修改方式都一样。
五、服务器本机先测试一次
假设服务端口是:
8080
可以直接在服务器里测试:
curl -v http://127.0.0.1:8080
也可以测试:
curl -v http://服务器公网IP:8080
如果:
127.0.0.1:8080
能够正常访问,但是:
公网IP:8080
访问失败,那么问题通常应该继续从监听地址、防火墙和安全组方向检查。
如果连:
127.0.0.1:8080
都打不开,那么优先处理程序本身。
六、检查云服务器安全组
很多端口不通并不是 Linux 本身的问题,而是云平台的安全组没有放行。
例如你的程序运行在:
8080
但是安全组只允许:
22
80
443
那么公网访问 8080 就可能失败。
需要在云服务器控制台检查对应实例的入站规则。
例如:
TCP
端口:8080
来源:根据实际需求填写
不建议为了图方便直接开放:
1-65535
尤其是数据库、Redis、管理后台等服务,更不建议直接暴露到公网。
对于莱卡云服务器,同样可以根据实际部署的项目开放需要使用的端口,没有使用的端口建议保持关闭。
七、检查 Linux 防火墙
即使云平台安全组已经放行,Linux 系统自身仍然可能存在防火墙规则。
Ubuntu / Debian
可以检查:
ufw status
如果 UFW 已经开启,需要确认目标端口是否允许。
例如:
ufw allow 8080/tcp
然后:
ufw status
确认规则。
CentOS / AlmaLinux / Rocky Linux
可以查看 firewalld:
firewall-cmd --list-all
查看当前开放端口:
firewall-cmd --list-ports
需要开放 8080 时可以根据实际情况配置:
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
如果服务器使用的是 iptables,也可以检查:
iptables -L -n -v
在修改防火墙之前一定要确认 SSH 管理端口。
尤其是远程服务器,不要误删 SSH 放行规则,否则有可能导致自己无法重新连接服务器。
八、Docker 项目还要检查端口映射
Docker 用户非常容易遇到:
容器里面程序正常,但是公网打不开。
首先执行:
docker ps
重点看:
PORTS
例如:
0.0.0.0:8080->80/tcp
代表:
服务器8080端口
↓
映射
↓
容器80端口
公网访问就应该使用:
http://服务器IP:8080
如果只看到:
80/tcp
却没有类似:
0.0.0.0:8080->80/tcp
通常代表该端口没有发布到宿主机公网接口。
Docker Compose 中常见配置例如:
ports:
- "8080:80"
修改之后需要重新创建或者启动对应容器。
同时还应该确认容器内部的软件本身是否正常运行。
可以查看:
docker logs 容器名称
九、从另一台设备测试目标端口
服务器内部正常之后,还需要从外部测试。
Linux 或 macOS 可以使用:
nc -vz 服务器IP 8080
例如:
Connection refused
说明至少已经能够与目标地址建立一定程度的通信,但目标端口没有正常接受连接。
如果长时间等待之后:
timed out
则继续重点检查安全组、防火墙以及网络路径。
也可以使用:
curl -v http://服务器IP:8080
对于 HTTP 服务来说,curl -v 往往能够提供更多连接过程信息。
十、Ping 得通,不代表端口一定能通
这是一个比较常见的误区。
执行:
ping 服务器IP
如果服务器能 Ping 通,只能说明 ICMP 通信在当前网络条件下可以正常完成。
但是:
TCP 22
TCP 80
TCP 443
TCP 8080
属于另外的网络通信。
所以:
Ping正常
并不能证明:
网站端口一定正常
SSH一定正常
Docker端口一定正常
反过来也一样。
部分服务器会限制 ICMP,因此 Ping 不通,也不能直接判断服务器已经离线。
十一、仍然超时时再检查路由
如果已经确认:
- 服务正在运行
- 端口正常监听
- 安全组已经放行
- Linux 防火墙没有拦截
- Docker 映射正常
但从部分地区访问仍然超时,就可以进一步检查网络路径。
例如:
mtr -rwzc 20 目标IP
或者:
traceroute 目标IP
这里需要注意,中间某一跳显示丢包,并不一定代表该节点真的存在故障。
一些路由设备会降低或者限制 ICMP 响应优先级。
应该重点观察:
最终目标是否存在持续丢包、延迟是否明显异常,以及问题是否能够稳定复现。
十二、最快的排查顺序
遇到服务器端口不通时,可以直接按照下面这个顺序检查:
1. 程序是否启动
↓
2. ss 检查端口是否监听
↓
3. 检查是否只监听 127.0.0.1
↓
4. 本机 curl 测试
↓
5. 检查云服务器安全组
↓
6. 检查 UFW / firewalld / iptables
↓
7. Docker 用户检查端口映射
↓
8. 从外部使用 nc / curl 测试
↓
9. 最后再检查网络路由
按照这个顺序排查,可以避免一开始就去修改大量系统配置。
十三、常见现象快速判断
| 现象 | 优先检查 |
|---|---|
| Connection refused | 服务状态、端口监听 |
| Connection timed out | 安全组、防火墙、网络 |
| 127.0.0.1 能访问,公网不能访问 | 监听地址、安全组、防火墙 |
| Docker 容器正常但公网打不开 | Docker ports 映射 |
| 服务器能 Ping,端口打不开 | TCP端口、安全组、防火墙 |
| 部分网络能访问,部分网络不能访问 | 网络路由、运营商路径 |
| 重启服务后恢复 | 程序异常、资源不足、服务崩溃 |
总结
云服务器端口不通时,不建议一开始就重装系统或者重新部署程序。
大多数问题都可以归结为几个方向:
程序
端口监听
安全组
系统防火墙
Docker映射
网络路径
其中 Connection refused 和 Connection timed out 可以帮助我们快速确定大致的排查方向。
如果使用莱卡云服务器部署网站、Docker 应用或者其他网络服务,在开放业务端口时,也建议遵循“按需开放”的原则,只开放实际需要使用的 TCP 或 UDP 端口。
既能减少后期排查难度,也可以避免因为开放过多不必要端口增加服务器的安全风险。

