Mercure部署至GCP预发布环境遇401未授权问题排查求助
问题:Symfony 6.4 + Mercure 部署至GCP预发布环境后出现401未授权错误
本地Docker Compose环境(正常工作)
Mercure服务环境变量配置如下:
SERVER_NAME: ':7999' PORT: 7999 MERCURE_PUBLISHER_JWT_KEY: '!MercureDevelopmentSigningKeyLongEnough!' MERCURE_SUBSCRIBER_JWT_KEY: '!MercureDevelopmentSigningKeyLongEnough!' MERCURE_EXTRA_DIRECTIVES: 'cors_origins https://app.domain.local'
客户端订阅主题代码:
window.eventSource = new EventSource( "{{ mercure(getMercureSubscribedTopics(), {'subscribe': getMercureSubscribedTopics()})|escape('js') }}", { withCredentials: true });
GCP预发布环境异常情况
将应用迁移至GCP预发布环境后,客户端订阅时出现401未授权错误。根据Mercure故障排查文档,日志应包含错误原因,但无法获取相关信息:
- 即使添加
DEBUG=debug或MERCURE_EXTRA_DIRECTIVES=debug环境变量,GCP Cloud Run服务输出无变化 - 当前容器配置的环境变量:
- SERVER_NAME:
:80 - MERCURE_SUBSCRIBER_JWT_KEY(来自GCP密钥管理)
- MERCURE_PUBLISHER_JWT_KEY(来自GCP密钥管理)
- SERVER_NAME:
- Mercure通过负载均衡服务代理
/.well-known/mercure路径,日志仅能看到请求记录和401响应,无错误详情
已完成的排查动作
- 检查浏览器控制台,确认客户端请求已携带JWT
- 通过jwt.io验证令牌有效,签名与密钥匹配
- 反复核对客户端与Mercure服务使用的密钥完全一致
- 尝试添加
MERCURE_EXTRA_DIRECTIVES=cors_origins https://my.staging.domain.com(虽错误与CORS无关),问题仍存在
待解决疑问
- 还需排查哪些内容定位401错误原因?
- 如何获取Mercure容器/服务的详细日志信息?
内容的提问来源于stack exchange,提问作者Maxxer
相关产品推荐
相关产品推荐

