当你在浏览器访问网站或接口时看到错误提示:
❌ ERR_CONNECTION_REFUSED
这意味着:浏览器成功找到目标 IP,但连接请求被拒绝了。也就是说,目标服务器完全没有接受你的请求连接。
🧠 一句话理解
浏览器说:“我找到了服务器的门(IP:端口),但它直接把门关上了,不让我进。”
🧨 常见原因与解决方法对照表:
原因 | 详细解释 | 解决方法 |
---|---|---|
① 服务器未启动 | 请求的 IP:端口 没有任何服务在监听 | 启动后端服务;确保监听的是正确端口 |
② 服务监听在 127.0.0.1 (仅本地访问) | 你访问的是公网 IP,但服务只允许本地访问 | 修改服务监听地址为 0.0.0.0 (可被外网访问) |
③ 防火墙或安全软件阻止连接 | 系统或云平台安全策略屏蔽了端口 | 打开指定端口(如 80, 443, 8080 等)防火墙设置 |
④ 代理设置错误 | 浏览器使用了错误或无效的代理地址 | 禁用代理,恢复为直连网络 |
⑤ DNS 正常但 IP 不通 | 域名解析正确,但服务器不在线或网络中断 | ping IP 看是否通;检查服务器状态 |
⑥ 浏览器缓存或扩展拦截 | 插件或浏览器缓存阻止了连接 | 使用无痕模式,或更换浏览器测试 |
⑦ Docker 容器未正确映射端口 | 容器运行了,但宿主机没有暴露端口 | 使用 -p 8080:8080 参数启动容器 |
🛠 解决方法详解:
✅ 1. 启动目标服务
确保你访问的服务已运行。例如:
# 启动 Node.js 应用
node app.js
# 启动 Flask 应用(绑定所有 IP)
python app.py --host=0.0.0.0
✅ 2. 修改监听地址为 0.0.0.0
如果只绑定 127.0.0.1
,外部设备无法访问。
错误示例:
app.run(host='127.0.0.1', port=8080) # 只能本地访问
正确示例:
app.run(host='0.0.0.0', port=8080) # 所有 IP 可访问
✅ 3. 检查防火墙(Windows / Linux)
- Windows:
netsh advfirewall firewall add rule name="Allow8080" dir=in action=allow protocol=TCP localport=8080
- Linux:
sudo ufw allow 8080/tcp
✅ 4. 清除代理设置
- Chrome → 设置 → 系统 → 打开代理设置 → 清除或关闭所有代理。
- 或直接访问
chrome://settings/system
✅ 5. 网络检查
- Ping 或 telnet 测试连接:
ping yourdomain.com
telnet yourdomain.com 80
✅ 6. 使用 curl 测试接口响应
curl http://localhost:8080
🧪 快速自查清单
- 服务程序是否在运行?
- 是否监听了正确 IP 和端口?
- 有没有被防火墙/云服务安全组拦截?
- 有没有设置错误代理?
- 是不是容器内部端口未暴露?
如果你提供访问的地址(如 http://localhost:8080
、192.168.1.100:5000
或域名),我可以帮你分析是哪一层出错,甚至可以提供脚本测试端口连通性。是否需要?
发表回复