出现“ERR_CONNECTION_REFUSED”的原因及解决方法

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


1. 服务器未启动

原因

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

解决方案

  1. 确认服务器是否运行

    • Windows:

      复制代码
      netstat -ano | findstr :端口号
    • Linux/macOS:

      perl 复制代码
      netstat -tulnp | grep 端口号
    • 确保服务器监听了正确的端口(如 3000、5000、8080)。

  2. 手动启动服务器

    bash 复制代码
    node server.js # Node.js python app.py # Flask/Django sudo systemctl restart nginx # Nginx/Apache
  3. 如果服务器已经运行,尝试重新启动

    python 复制代码
    pm2 restart all # 使用 PM2 管理的 Node.js 进程

2. 端口占用

原因

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

解决方案

  1. 查找占用端口的进程

    • Windows:

      复制代码
      netstat -ano | findstr :端口号 tasklist | findstr 进程ID
    • Linux/macOS:

      css 复制代码
      lsof -i :端口号
  2. 杀掉占用端口的进程

    • Windows:

      r 复制代码
      taskkill /PID 进程ID /F
    • Linux/macOS:

      bash 复制代码
      kill -9 进程ID
  3. 或者换一个端口

    • 修改 server.js:

      javascript 复制代码
      app.listen(8081, () => console.log('Server running on port 8081'));

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

原因

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

解决方案

  1. 确认服务器监听地址

    • 在 server.js 等文件中,确保监听 0.0.0.0 而不是 127.0.0.1:

      javascript 复制代码
      app.listen(8080, '0.0.0.0', () => console.log('Server running on all interfaces'));
    • Flask(Python):

      ini 复制代码
      app.run(host='0.0.0.0', port=8080)
  2. 检查 hosts 文件

    • Windows:

      复制代码
      notepad C:\Windows\System32\drivers\etc\hosts
    • Linux/macOS:

      bash 复制代码
      sudo nano /etc/hosts

    确保 localhost 解析为 127.0.0.1:

    复制代码
    127.0.0.1 localhost

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

原因

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

解决方案

  1. Windows 防火墙

    • 允许应用访问网络:

      ini 复制代码
      netsh advfirewall firewall add rule name="允许8080端口" dir=in action=allow protocol=TCP localport=8080
  2. Linux 防火墙

    css 复制代码
    sudo ufw allow 8080/tcp sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
  3. 尝试关闭防火墙

    • Windows:

      vbnet 复制代码
      netsh advfirewall set allprofiles state off
    • Linux:

      arduino 复制代码
      sudo systemctl stop firewalld

5. 代理/VPN 设置问题

原因

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

解决方案

  • 禁用代理

    • Windows:

      perl 复制代码
      netsh winhttp reset proxy
    • Linux/macOS:

      bash 复制代码
      unset http_proxy https_proxy
  • 关闭 VPN

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


6. 服务器拒绝了连接

原因

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

解决方案

  1. 检查 Nginx 是否拒绝连接

    • 查看 nginx.conf:

      bash 复制代码
      sudo nano /etc/nginx/nginx.conf
    • 确保 server 块的 listen 指令正确:

      arduino 复制代码
      server { listen 80; server_name yourdomain.com; }
    • 重新加载 Nginx:

      复制代码
      sudo systemctl restart nginx
  2. 检查 Web 服务器日志

    • Nginx:

      bash 复制代码
      sudo tail -f /var/log/nginx/access.log
    • Apache:

      bash 复制代码
      sudo tail -f /var/log/apache2/access.log

7. 网络问题

🔍 原因

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

解决方案

  1. Ping 目标服务器

    复制代码
    ping 目标IP

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

  2. 尝试使用 curl 访问

    arduino 复制代码
    curl -v http://目标IP:端口

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

  3. 切换 DNS

    • Windows:

      vbnet 复制代码
      netsh interface ip set dns "Wi-Fi" static 8.8.8.8
    • Linux/macOS:

      bash 复制代码
      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 仍然存在,建议检查 服务器日志 并尝试从本地与远程分别访问,找出问题根源。

相关推荐
乌暮13 分钟前
请求进门先安检:Spring 拦截器与统一功能实战指南
java·开发语言·后端·学习·spring
学长毕设21 分钟前
基于SpringBoot的烘焙商品商品系统-附源码
java·spring boot·后端
付威202344 分钟前
Durable Execution 怎样设计:从运行记录到中断恢复
后端
LHICOD2 小时前
Linux-2
java·linux·后端·jar·vmware·svm·vm
小杨互联网2 小时前
Go 现代 CLI 工具离线镜像合集
开发语言·后端·golang·开源·go·命令行
lazy H2 小时前
【计算机网络】第 15 篇:Java BIO、NIO 与高并发网络通信——从 Socket 理解 I/O 模型
网络·后端·tcp/ip·计算机网络·nio·408
geovindu3 小时前
rust: Semaphore Pattern
开发语言·后端·设计模式·rust·代理模式·企业级信号量模式·同步型模式
Thneonl4 小时前
Claude Code 频繁 Compacting?发布次日我根治了 2 个痛点
后端·rust
环境栈笔记6 小时前
指纹浏览器安卓怎么用?从运行位置到功能验收,先把三种方案分清
前端·人工智能·后端·自动化
小小张说故事6 小时前
Python 的 list 为什么能装下任何类型?拆开 PyObject* 数组,以及它让你多付了多少内存
后端·python