Debian版WSL开放80端口搭建数据库遇ConnectionRefusedError如何解决
问题核心原因
你遇到的Connection refused报错不是端口被防火墙拦截,而是当前WSL的Debian系统中没有任何服务在80端口监听,你执行ss -lt无输出已经验证了这一点,开放端口的前提是先有服务绑定对应端口。
解决步骤
1. 优先启动项目依赖的本地API服务
从报错信息看,你的导入脚本需要调用localhost:80/api/datasets接口,这是你交易机器人项目配套的本地后端服务(大概率是用于存储价格数据的数据库配套API、或者项目自带的Web后端)没有启动,请先查阅项目文档启动对应的服务,服务启动后80端口会自动被占用,即可解决连接报错。
2. 临时测试80端口连通性方案
如果你需要临时验证80端口的连通效果,可以用Python自带的静态HTTP服务测试(该服务无法满足你项目的API调用需求,仅用于验证端口逻辑):
# 1024以下端口绑定需要root权限,所以加sudo sudo python3 -m http.server 80
启动后新开终端执行ss -lt即可看到80端口的监听记录,此时请求localhost:80不会返回连接拒绝错误。
如果需要后台运行该服务,执行:
sudo python3 -m http.server 80 &
3. 防火墙放行80端口方案(可选,仅当有防火墙拦截时需要)
你当前环境未安装UFW,若后续安装了防火墙,可通过如下命令放行80端口:
# iptables放行80端口入站流量 sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT # 保存规则(需提前安装iptables-persistent包) sudo netfilter-persistent save
4. WSL专属端口转发配置(可选,仅当需要外部设备访问WSL内的80端口时需要)
WSL2默认使用NAT网络,Windows主机或局域网其他设备无法直接访问WSL内的服务,需要在Windows侧以管理员权限打开命令提示符执行如下配置:
# 先在WSL内执行ip a命令,获取eth0网卡的IP地址,例如172.23.xxx.xxx netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=80 connectaddress=替换为你的WSL的eth0IP connectport=80 # 放行Windows防火墙的80端口 netsh advfirewall firewall add rule name="WSL 80端口转发" dir=in action=allow protocol=TCP localport=80
内容的提问来源于stack exchange,提问作者ChristopheD
相关产品推荐
相关产品推荐

