Windows10环境下Symfony 5配置Mercure后无法访问Hub服务求助
问题原因
你返回的404错误由Apache服务抛出,核心是本地443端口已被预先启动的Apache占用,Mercure底层的Caddy服务没有成功绑定443端口,请求被Apache直接拦截,无法到达Mercure服务。
另外你的.env配置中MERCURE_URL开头多了一个多余的冒号,属于配置错误。
排查解决步骤
- 第一步先确认端口占用:打开PowerShell执行
netstat -ano | findstr :443,查看输出的PID对应的进程,确认是Apache服务后,优先停止本地Apache服务,再重启Mercure测试是否正常。 - 如果你需要同时保留Apache运行,就修改Mercure的监听端口,启动Mercure时追加端口参数即可:
$env:MERCURE_PUBLISHER_JWT_KEY='!ChangeMe!'; $env:MERCURE_SUBSCRIBER_JWT_KEY='!ChangeMe!'; .\mercure.exe run -config Caddyfile.dev --https-port 8443 - 同步修正Symfony的
.env配置:# 删掉开头多余的冒号,端口换成你指定的Mercure端口 MERCURE_URL=https://127.0.0.1:8443/.well-known/mercure MERCURE_PUBLIC_URL=https://127.0.0.1:8443/.well-known/mercure MERCURE_JWT_SECRET="!ChangeMe!" - 重启Mercure服务后,访问
https://127.0.0.1:8443/.well-known/mercure,如果返回401未授权错误,说明Mercure服务已经正常运行,401是未携带合法JWT的正常返回,符合预期。 - 如果修改端口后仍无法正常访问,确认你的Windows系统架构,你当前下载的是arm64版本的Mercure,常规x64架构Windows需要下载对应x86_64版本的Mercure包重新部署。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

