“ERR_CONNECTION_REFUSED” 错误通常表示 客户端(浏览器、应用或命令行工具)尝试连接到某个服务器时,服务器拒绝了连接。这个问题可能出现在本地开发环境、服务器或网络层面。以下是常见原因及对应的解决方案:
1. 服务器未启动
🔍 原因
- 服务器(如
Node.js、Django、Flask、Apache、Nginx)未运行或崩溃。 - 目标端口未监听(监听端口错误)。
- 服务器进程被防火墙、杀毒软件或权限限制阻止。
✅ 解决方案
-
确认服务器是否运行
- Windows:
netstat -ano | findstr :端口号 - Linux/macOS:
netstat -tulnp | grep 端口号 - 确保服务器监听了正确的端口(如
3000、5000、8080)。
- Windows:
-
手动启动服务器
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:
-
杀掉占用端口的进程
- Windows:
taskkill /PID 进程ID /F - Linux/macOS:
kill -9 进程ID
- Windows:
-
或者换一个端口
- 修改
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 - Windows:
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
- Windows:
5. 代理/VPN 设置问题
🔍 原因
- 代理(如 Charles、Fiddler、Burp Suite)或 VPN 可能拦截了连接。
✅ 解决方案
-
禁用代理
- Windows:
netsh winhttp reset proxy - Linux/macOS:
unset http_proxy https_proxy
- Windows:
-
关闭 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
- Nginx:
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
- Windows:
总结
| 问题 | 解决方案 |
|---|---|
| 服务器未启动 | 启动服务器,检查端口监听 |
| 端口被占用 | 终止占用端口的进程,换端口 |
| 监听了错误的 IP | 监听 0.0.0.0 而非 127.0.0.1 |
| 防火墙拦截 | 允许端口通过防火墙 |
| 代理/VPN 干扰 | 关闭代理和 VPN |
| 服务器拒绝连接 | 检查 Nginx/Apache 配置 |
| 网络问题 | Ping 服务器,更换 DNS |
如果 ERR_CONNECTION_REFUSED 仍然存在,建议检查 服务器日志 并尝试从本地与远程分别访问,找出问题根源。🚀
4181

被折叠的 条评论
为什么被折叠?



