出现“ERR

“ERR_CONNECTION_REFUSED” 错误通常表示 客户端(浏览器、应用或命令行工具)尝试连接到某个服务器时,服务器拒绝了连接。这个问题可能出现在本地开发环境、服务器或网络层面。以下是常见原因及对应的解决方案:

1. 服务器未启动

🔍 原因

服务器(如 Node.js、Django、Flask、Apache、Nginx)未运行或崩溃。目标端口未监听(监听端口错误)。服务器进程被防火墙、杀毒软件或权限限制阻止。

✅ 解决方案

确认服务器是否运行

Windows: netstat -ano | findstr :端口号

Linux/macOS: netstat -tulnp | grep 端口号

确保服务器监听了正确的端口(如 3000、5000、8080)。 手动启动服务器

node server.js # Node.js python app.py # Flask/Django sudo systemctl restart nginx # Nginx/Apache

如果服务器已经运行,尝试重新启动

pm2 restart all # 使用 PM2 管理的 Node.js 进程

2. 端口占用

🔍 原因

另一个进程占用了目标端口,导致服务器无法绑定该端口。

✅ 解决方案

查找占用端口的进程

Windows: netstat -ano | findstr :端口号 tasklist | findstr 进程ID

Linux/macOS: lsof -i :端口号

杀掉占用端口的进程

Windows: taskkill /PID 进程ID /F

Linux/macOS: kill -9 进程ID

或者换一个端口

修改 server.js: app.listen(8081, () => console.log('Server running on port 8081'));

3. 服务器监听了错误的 IP

🔍 原因

服务器可能 仅监听 127.0.0.1(localhost),而你尝试从外部访问。监听了 IPv6(::1)但客户端使用 IPv4。

✅ 解决方案

确认服务器监听地址

在 server.js 等文件中,确保监听 0.0.0.0 而不是 127.0.0.1: app.listen(8080, '0.0.0.0', () => console.log('Server running on all interfaces'));

Flask(Python): app.run(host='0.0.0.0', port=8080)

检查 hosts 文件

Windows: notepad C:\Windows\System32\drivers\etc\hosts

Linux/macOS: sudo nano /etc/hosts

确保 localhost 解析为 127.0.0.1:

127.0.0.1 localhost

4. 防火墙或安全软件拦截

🔍 原因

防火墙(Windows Defender、iptables)或安全软件(如 360、火绒)拦截了端口。

✅ 解决方案

Windows 防火墙

允许应用访问网络: netsh advfirewall firewall add rule name="允许8080端口" dir=in action=allow protocol=TCP localport=8080

Linux 防火墙

sudo ufw allow 8080/tcp sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

尝试关闭防火墙

Windows: netsh advfirewall set allprofiles state off

Linux: sudo systemctl stop firewalld

5. 代理/VPN 设置问题

🔍 原因

代理(如 Charles、Fiddler、Burp Suite)或 VPN 可能拦截了连接。

✅ 解决方案

禁用代理

Windows: netsh winhttp reset proxy

Linux/macOS: unset http_proxy https_proxy

关闭 VPN 直接断开 VPN 连接,或在浏览器设置中禁用代理。

6. 服务器拒绝了连接

🔍 原因

服务器 IP 被列入 黑名单,导致连接被拒绝。服务器 nginx、Apache 配置错误。

✅ 解决方案

检查 Nginx 是否拒绝连接

查看 nginx.conf: sudo nano /etc/nginx/nginx.conf

确保 server 块的 listen 指令正确: server { listen 80; server_name yourdomain.com; }

重新加载 Nginx: sudo systemctl restart nginx

检查 Web 服务器日志

Nginx: sudo tail -f /var/log/nginx/access.log

Apache: sudo tail -f /var/log/apache2/access.log

7. 网络问题

🔍 原因

目标服务器已关闭(远程服务器宕机)。网络故障(DNS 解析失败)。

✅ 解决方案

Ping 目标服务器

ping 目标IP

如果 ping 失败,说明服务器无法访问。

尝试使用 curl 访问

curl -v http://目标IP:端口

如果 curl 失败,说明服务器无法响应。

切换 DNS

Windows: netsh interface ip set dns "Wi-Fi" static 8.8.8.8

Linux/macOS: echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

总结

问题解决方案服务器未启动启动服务器,检查端口监听端口被占用终止占用端口的进程,换端口监听了错误的 IP监听 0.0.0.0 而非 127.0.0.1防火墙拦截允许端口通过防火墙代理/VPN 干扰关闭代理和 VPN服务器拒绝连接检查 Nginx/Apache 配置网络问题Ping 服务器,更换 DNS

如果 ERR_CONNECTION_REFUSED 仍然存在,建议检查 服务器日志 并尝试从本地与远程分别访问,找出问题根源。🚀