ALB目标组健康检查返回401、访问ALB域名提示未授权问题咨询
ALB返回401、直接访问后端正常排查步骤
- 确认目标组实例健康状态:先在AWS控制台目标组页面查看目标实例是否为
healthy状态,确认你将401加入健康检查成功状态码的配置已经生效,且ALB完成了至少3轮默认阈值的探测,实例未被标记为异常。 - 校验健康检查配置的协议与端口匹配性:如果你的后端流量端口仅监听HTTPS协议,你配置健康检查用HTTP协议访问该端口,部分服务会直接返回401/400错误,可以将健康检查协议改为HTTPS,或在后端服务对应端口开放HTTP支持。
- 检查ALB请求头转发配置:多数带权限校验的站点会校验
Host头、X-Forwarded-Proto等请求头,你直接访问私有IP时Host头为实例私有IP,通过ALB访问时Host头为ALB的DNS域名,若后端服务配置了仅允许指定Host头的请求访问,就会出现ALB访问返回401的情况。可以对比后端访问日志中两种请求的头信息差异,定位是否为Host头拦截。 - 排查ALB监听器身份认证配置:如果你的ALB 443监听器开启了AWS自带的OIDC/Cognito身份认证功能,未完成身份校验的请求会被ALB直接返回401,请求不会转发到后端服务,因此直接访问后端私有IP不受影响。
- 校验后端服务授权逻辑:
- 若后端开启了mTLS客户端证书校验,ALB转发请求时未携带有效客户端证书会被返回401,你直接访问私有IP时如果跳过了证书校验就会访问正常
- 若站点需要登录才能访问,直接访问私有IP时可能存在本地缓存的登录cookie,通过ALB域名访问时为全新会话无有效cookie,也会返回401,可使用无痕模式直接访问私有IP:端口验证该场景
- 查看后端服务日志定位具体原因:Nginx服务默认错误日志路径为
/var/log/nginx/error.log,Apache服务默认错误日志路径为/var/log/httpd/error_log,日志中会明确记录返回401的触发原因,是IP拦截、权限校验不通过还是请求头不匹配。
内容的提问来源于stack exchange,提问作者Prashanth
相关产品推荐
相关产品推荐

