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

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


1. 服务器未启动

原因

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

解决方案

  1. 确认服务器是否运行

    • Windows:

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

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

  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 被列入 黑名单,导致连接被拒绝。
  • 服务器 nginxApache 配置错误。

解决方案

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

相关推荐
2401_895521344 小时前
SpringBoot Maven快速上手
spring boot·后端·maven
disgare4 小时前
关于 spring 工程中添加 traceID 实践
java·后端·spring
ictI CABL4 小时前
Spring Boot与MyBatis
spring boot·后端·mybatis
小江的记录本6 小时前
【Linux】《Linux常用命令汇总表》
linux·运维·服务器·前端·windows·后端·macos
yhole9 小时前
springboot三层架构详细讲解
spring boot·后端·架构
香香甜甜的辣椒炒肉9 小时前
Spring(1)基本概念+开发的基本步骤
java·后端·spring
白毛大侠10 小时前
Go Goroutine 与用户态是进程级
开发语言·后端·golang
ForteScarlet10 小时前
从 Kotlin 编译器 API 的变化开始: 2.3.20
android·开发语言·后端·ios·开源·kotlin
大阿明10 小时前
SpringBoot - Cookie & Session 用户登录及登录状态保持功能实现
java·spring boot·后端
Binary-Jeff10 小时前
Spring 创建 Bean 的关键流程
java·开发语言·前端·spring boot·后端·spring·学习方法