Unable to connect to API (ConnectionRefused)

2026年06月02日 09:05 26.84 秒 success

错误信息

Unable to connect to API (ConnectionRefused)

AI 解决方案

🔍 错误分析

1. 🌐 错误翻译


原文: Unable to connect to API (ConnectionRefused)
译文: 无法连接到 API(连接被拒绝)

2. 🎯 原因分析


此错误表明您的客户端程序尝试与一个 API 服务建立网络连接时,连接请求被目标服务器主动拒绝。根本原因通常是:

API 服务未运行: 目标服务器上的 API 应用程序或守护进程没有启动。
监听地址/端口错误: API 服务正在运行,但没有在您尝试连接的 IP 地址或端口上监听。例如,您连接 localhost:8080,但服务监听在 127.0.0.1:3000
防火墙/安全策略拦截: 服务器或客户端的防火墙、安全组规则阻止了该端口的连接请求。
服务配置错误: API 服务绑定的地址是 127.0.0.1 (仅本地访问),而您尝试从外部连接。

3. 💡 解决方案


请按顺序排查以下环节:

第一步:确认 API 服务状态
在运行 API 服务的服务器上执行:

# Linux/macOS
sudo systemctl status <服务名>  # 如果是 systemd 服务
ps aux | grep <应用进程名>       # 检查进程是否存在
netstat -tlnp | grep <端口号>    # 检查端口监听情况
# 或使用 ss -tlnp | grep <端口号>

# Windows
Get-Process <进程名>
netstat -ano | findstr :<端口号>

第二步:检查监听配置
确保 API 服务监听的地址和端口与您连接时使用的一致。
``代码语言

示例:确保服务监听在 0.0.0.0 或具体公网IP,而非仅127.0.0.1


Python (Flask)


app.run(host='0.0.0.0', port=5000)

Node.js (Express)


app.listen(5000, '0.0.0.0');

Java (Spring Boot) - 在 application.properties 中


server.address=0.0.0.0
server.port=8080

**第三步:测试网络连通性**
从客户端机器上测试与目标端口的连接:
bash

使用 telnet(部分系统已弃用)


telnet <服务器IP> <端口号>

使用 netcat (nc) - 更通用


nc -zv <服务器IP> <端口号>

使用 curl(如果API是HTTP服务)


curl http://<服务器IP>:<端口号>/health # 尝试一个健康检查端点

**第四步:检查防火墙规则**
bash

Linux (使用 ufw)


sudo ufw status
sudo ufw allow <端口号>/tcp

Linux (使用 firewalld)


sudo firewall-cmd --list-ports
sudo firewall-cmd --add-port=<端口号>/tcp --permanent
sudo firewall-cmd --reload

检查云服务商的安全组规则(如AWS, 阿里云,腾讯云等),确保入站规则允许对应端口。


`

4. 🛡️ 预防措施


  • 实施健康检查与监控: 在 API 服务中实现 /health 端点,并使用监控工具(如 Prometheus、UptimeRobot)主动探测服务状态,及时发现服务中断。

  • 使用容器编排工具: 如果使用 Docker 或 Kubernetes,可以通过 HEALTHCHECK` 指令或就绪探针(Readiness Probe)自动管理服务生命周期和网络策略,减少手动配置错误。