同一域名下多站点切换访问出现HTTP 404错误求助
排查方向
HAProxy 会话与缓存配置排查
- 检查HAProxy是否开启了基于客户端IP的会话绑定(如
stick-table、appsession),确认绑定超时时间是否为5分钟——若规则错误将请求固定到了错误后端,访问其他站点自然会找不到对应资源。 - 查看HAProxy的HTTP缓存配置(
cache指令),检查是否误缓存了站点路由信息或404响应,且缓存过期时间刚好匹配5分钟的问题窗口。 - 逐行对比新旧HAProxy的配置文件,重点核对会话保持、缓存、Host头匹配的
acl规则——哪怕是注释、参数顺序的细微变化都可能引发问题。
客户端缓存与Cookie验证
- 抓取正常模式和隐私模式的请求包,对比Cookie差异:查找HAProxy或后端服务器下发的会话Cookie(如
SERVERID类标识),确认是否绑定了特定后端服务器,且过期时间为5分钟。 - 清除客户端Cookie后直接访问第二个站点,验证是否能正常访问,以此确认Cookie是否是请求被固定到错误服务器的原因。
- 检查浏览器缓存策略,确认是否缓存了第一个站点的DNS记录、
Cache-Control等响应头,导致后续请求未正确发送Host头或被路由到错误后端。
后端IIS路由与日志排查
- 检查每个IIS站点的Host头绑定,确保仅绑定对应域名,未设置通配符绑定导致路由混乱;同时确认
Host Name绑定生效,避免站点间路由冲突。 - 在后端服务器开启请求日志,记录每个请求的Host头、客户端IP、请求路径,查看访问第二个站点时,请求是否被错误路由到第一个站点的应用池,进而返回404。
- 检查后端服务器是否存在全局URL重写规则,是否错误地根据客户端IP或会话信息修改了请求路径或Host头。
网络层连接复用排查
- 检查HAProxy与后端服务器之间的TCP连接复用配置,确认是否存在长连接复用导致请求被发送到错误后端的情况(比如TCP连接保持时间为5分钟,后续请求复用了之前绑定到第一个站点的连接)。
- 尝试禁用HAProxy的TCP连接复用(设置
option nolinger或调整server指令的maxconn、timeout connect参数),观察问题是否消失。
新旧服务器配置差异深挖
- 对比新旧服务器的HAProxy版本,不同版本的会话保持逻辑可能存在差异;同时检查操作系统TCP参数(如
tcp_tw_reuse等连接复用相关参数)的设置差异。 - 检查自动化配置工具(如Ansible、SaltStack)是否存在配置遗漏,确认新服务器是否同步了旧服务器的所有HAProxy全局参数或后端服务器权重设置。
内容的提问来源于stack exchange,提问作者Jonathan Corbett
相关产品推荐
相关产品推荐

