openclaw本地连接被拒绝的根源是端口占用或监听地址不匹配:需先用lsof或netstat确认服务是否启动及实际监听端口,再检查localhost是否解析为127.0.0.1(而非::1),并验证nginx/apache/docker等进程是否抢占80/8080端口,最后通过curl或telnet测试127.0.0.1:端口连通性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当你在本地运行 OpenClaw 服务时,浏览器访问 http://localhost 显示连接被拒绝、空白页或跳转到其他服务页面,说明端口可能被占用或服务未监听在预期地址——这不是网络问题,而是本机端口资源分配冲突导致的直接表现。
确认OpenClaw实际监听端口
打开终端,执行:sudo lsof -iTCP -sTCP:LISTEN -P | grep -i openclaw
若无输出,说明 OpenClaw 进程根本没启动,或未以监听模式运行;若有输出,重点看最后一列的 PORT 值(如 :8080),这就是它真正在用的端口。别信配置文件里写的“默认80”,进程实际绑定的端口才作数。
这一步必须做,因为 OpenClaw 启动时若检测到目标端口已被占,会自动 fallback 到下一个可用端口,但控制台日志未必明确提示——你看到的日志写着“Server started on port 80”,实际却绑在 8081 上。
检查 localhost 是否解析为 127.0.0.1
执行:ping -c 1 localhost
观察返回的 IP 地址。如果显示的是 ::1(IPv6 地址),而 OpenClaw 只监听 IPv4 的 127.0.0.1,那么 http://localhost 就会失败——浏览器优先走 IPv6,但服务没在那里监听。
临时验证方法:直接用 http://127.0.0.1:8080 替代 http://localhost:8080 访问。能通就说明是 hosts 解析问题。
【/etc/hosts 中 localhost 行被篡改或缺失会导致此问题】
排查常见端口占用进程
第一步:查 80 和 8080 端口谁在用sudo ss -tuln | grep ':80\|:8080'
第二步:若发现 PID,用以下命令看是谁sudo ps -p PID -o pid,ppid,cmd,%mem,%cpu(把 PID 替换为上一步查到的数字)
第三步:重点盯这几个常驻嫌疑进程:
– nginx(常默默监听 80)
– Apache httpd(尤其在 Ubuntu Desktop 预装场景)
– Docker 容器(docker ps 查是否有映射到 host 80 的容器)
– VS Code Remote-SSH 的端口转发隧道(ps aux | grep ssh.*-L)
注意:不要直接 kill -9,先用 systemctl status nginx 确认是否为系统关键服务;如果是开发环境临时起的 Python HTTP server,可安全终止。
验证 OpenClaw 是否真在监听 localhost
方法一:用 curl 测试本地回环curl -v http://127.0.0.1:8080
方法二:用 telnet 检查 TCP 连通性(不依赖 HTTP 协议)telnet 127.0.0.1 8080
如果显示 Connected to 127.0.0.1.,说明端口开放且有进程响应;如果卡住或报 Connection refused,证明 OpenClaw 根本没监听该地址+端口组合。
方法三:强制指定绑定地址启动 OpenClaw(如支持)openclaw --host 127.0.0.1 --port 8080
有些版本默认绑定 0.0.0.0,但在某些 SELinux 或防火墙策略下,localhost 解析路径会被拦截,显式指定 127.0.0.1 可绕过中间环节。










