GCE负载均衡器日志中异常404、401警告的来源排查
GCE负载均衡器里两类警告请求的原因拆解
一、GET https://<MY_DOMAIN>/.well-known/acme-challenge/* 404警告
- 这肯定不是GCP的健康检查请求,而是Let's Encrypt这类ACME协议证书服务商的域名所有权验证请求。
- 当你用cert-manager、certbot这类工具自动申请或续期SSL证书时,它们会触发HTTP-01验证:让证书服务商访问你域名下的
/.well-known/acme-challenge/路径,读取一个特定的验证文件,以此确认你确实拥有这个域名。 - 出现404的常见原因:
- 后端服务没配置好这个路径的响应,比如cert-manager的Ingress规则写错了,或者验证文件没正确部署到后端Pod里;
- 负载均衡器的路由规则没把这个路径的请求转发到处理验证的后端(比如cert-manager临时启动的小Pod);
- 证书续期已经完成,但旧的验证请求还在重试,或者任务配置的重试频率太高。
二、GET https://<MY_SERVICE_DOMAIN>/* 401警告
- 这个也不是GCP官方的健康检查——GCP负载均衡的健康检查请求有固定特征:比如路径是你在后端服务里设置的就绪探针路径(像
/healthz),用户代理是GoogleHC/1.0,绝对不是Go-http-client/1.1。 - 出现401的原因主要是:
- 某个用Go写的客户端(比如内部服务、第三方集成脚本)在访问你的服务,但没带正确的认证凭证(比如API密钥、Bearer Token、基础认证信息),所以服务返回401未授权;
- 你的服务最近改了认证规则,但客户端没同步更新,还在用旧方式请求;
- 也有可能是爬虫或自动化工具在扫描你的服务,但过不了身份验证这关。
小提示:快速识别GCP官方健康检查
GCP的健康检查请求很好认,你可以对照日志看这几点:
- 用户代理固定是
GoogleHC/1.0; - 请求路径是你在后端服务就绪/存活探针里配置的路径(比如默认的
/,或者你自定义的/health); - 请求频率和你设置的检查间隔一致(比如默认每5秒一次),而且只针对后端服务组里的Pod发起。
内容的提问来源于stack exchange,提问作者Markward Schubert
相关产品推荐
相关产品推荐

