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

Windows WSL2+Docker环境下API Platform的Caddy无法访问PWA问题

WSL2环境下API Platform PWA无法访问解决方案

根因说明

该问题由WSL2端口映射异常、Mercure鉴权校验失败、静态资源挂载权限三个问题叠加导致,和本地SSL证书信任无关,你提供的Caddy日志中400错误对应的就是Mercure接口鉴权失败。

解决步骤

1. 修复WSL2端口映射残留

  • 关闭当前运行的容器:docker compose down
  • 在Windows终端执行命令重启WSL,清除残留端口映射:wsl --shutdown
  • 重启后打开Docker Desktop设置,确认「WSL集成」页中你使用的Ubuntu发行版开关已开启

2. 修改Caddy配置跳过本地Mercure鉴权

找到项目根目录下的caddy/Caddyfile文件,替换Mercure和PWA路由配置段为以下内容,原有其他配置保持不变:

localhost {
    # 适配WSL2的Mercure请求自动补全鉴权头
    @mercure path /.well-known/mercure
    reverse_proxy @mercure mercure:80 {
        header_up X-Forwarded-For {remote_host}
        header_up Authorization "Bearer {env.MERCURE_JWT_TOKEN}"
    }

    # PWA站点路由
    route / {
        root * /srv/pwa/build
        try_files {path} {path}/ /index.html
        file_server
    }

    # Admin后台路由
    route /admin/* {
        root * /srv/admin/build
        try_files {path} {path}/ /admin/index.html
        file_server
    }

    # 原有API文档相关配置保持不变
}

3. 修复静态资源挂载问题

  • 确保整个项目源码存放在WSL2的Ubuntu文件系统内(路径形如/home/你的用户名/项目名),不要放在Windows的/mnt/c挂载盘下,挂载盘的权限限制会导致Caddy无法读取PWA打包后的静态资源
  • 删除原有容器卷避免缓存影响:docker compose down -v
  • 重新构建启动容器:docker compose up --build

4. 可选:解决本地证书不信任问题

Chrome浏览器访问chrome://flags/#allow-insecure-localhost,将该选项设置为Enabled后重启浏览器,即可消除本地HTTPS证书不受信任的提示。

验证

容器启动完成后访问https://localhost即可正常打开PWA站点,https://localhost/admin可正常加载后台,https://localhost/docs接口文档也可正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:45:04