Golang HTTP多次重定向异常排查:HAProxy TLS透传场景问题
问题原因分析
以下是导致浏览器出现重定向循环错误的核心原因:
认证子域名请求被误转发到应用服务
你的HAProxy路由配置可能存在疏漏,将auth.my-site.com的请求也转发到了当前应用。当浏览器重定向到登录页时,该请求进入应用后被授权拦截逻辑判定为未授权,再次触发302重定向回auth.my-site.com,形成无限循环,直到浏览器终止请求。授权拦截逻辑未豁免认证子域名
应用的全局授权拦截逻辑没有对auth.my-site.com的请求做特殊处理。即便HAProxy路由正确,若拦截器没有判断请求Host是否为认证子域名,就会对登录页请求也执行未授权重定向,导致循环。Host头传递异常(次要可能)
TLS透传模式下,若HAProxy未正确传递原始请求的Host头,req.Host可能获取到后端应用的内部地址而非真实请求域名。这会导致重定向的refer参数错误,但当前循环重定向更大概率是前两个原因导致。
验证方法
查看应用的unauthorizedPage函数日志,如果日志中出现auth.my-site.com相关的记录,即可确认是认证子域名的请求被应用处理,触发了循环重定向。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

