You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2环境启动Spring Boot应用调用接口返回404问题求助

问题常见成因
  • WSL2采用独立虚拟网卡架构,默认的localhost端口转发机制偶发失效,无法将Windows侧的localhost请求自动转发到WSL2内部服务
  • Spring Boot服务在WSL2中启动时仅绑定了127.0.0.1回环地址,仅允许WSL2内部访问,拒绝外部(包括Windows宿主)的请求
  • WSL2内置的ufw防火墙未放开对应服务端口的访问权限
排查步骤
  1. 验证WSL2内部服务可用性
    在WSL2终端执行命令:
    curl http://localhost:8080/task
  • 若正常返回Hello字符串,说明Spring Boot服务启动正常,问题出在Windows到WSL2的网络链路
  • 若同样返回404,首先检查Spring Boot启动日志是否扫描到TaskController类,确认是否配置了server.servlet.context-path上下文前缀,其次执行lsof -i:8080查看8080端口是否被其他进程占用。
  1. 检查服务绑定地址
    查看Spring Boot启动日志,确认服务绑定地址:
  • 若日志显示绑定地址为127.0.0.1:8080,说明仅允许本地访问
  • 若绑定地址为0.0.0.0:8080,则服务对外开放访问
  1. 验证WSL2直接IP访问
    在WSL2终端执行命令获取内网IP:
    ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
    在Windows侧Postman请求http://[获取到的WSL2 IP]:8080/task,如果能正常返回,可确定是localhost转发失效问题
对应解决方案
  • 服务绑定地址问题:在Spring Boot的application配置文件中添加配置server.address=0.0.0.0,重启服务即可
  • localhost转发失效问题:
    • 临时方案:每次启动服务后直接使用WSL2的eth0内网IP访问
    • 永久方案:在Windows终端执行wsl --update升级到最新版WSL2,微软已在新版本修复了localhost转发的常见问题,升级后重启WSL即可
  • 防火墙拦截问题:在WSL2终端执行sudo ufw allow 8080放开对应端口的访问权限

内容的提问来源于stack exchange,提问作者user5228754

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:18:03