You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HAproxy配置问题:土耳其境外流量出现Too Many Redirects排查

解决HAproxy境外流量重定向导致的Too Many Redirects问题

这问题我之前帮朋友排查过,核心就是重定向规则没有排除目标域名的请求,导致无限循环了——咱们一步一步说清楚:

问题根源

当境外流量被重定向到lbde.test.com后,这个新请求依然会经过HAproxy的规则检查:

  • 此时CF-IPCountry还是非TR值
  • 同时test_de ACL会匹配到lbde.test.com
  • 但你原来的规则里,重定向操作没有排除这个域名的请求,所以HAproxy会再次执行重定向,直接陷入循环。

修正后的配置

把你的规则调整成这样,就能解决循环问题:

acl acl_tr req.hdr(CF-IPCountry) eq "TR"
acl test_hname hdr(host) -m end lbtest.test.com
acl test_de hdr(host) -m end lbde.test.com

# 土耳其境内访问lbtest.test.com,走业务后端
use_backend test_backends if acl_tr test_hname
# 土耳其境内访问lbde.test.com,同样走后端(可根据你的业务需求调整)
use_backend test_backends if acl_tr test_de
# 仅当非土耳其境内、且访问的是lbtest.test.com时,才重定向到lbde.test.com
redirect code 302 prefix https://lbde.test.com unless acl_tr test_de
# 所有访问lbde.test.com的请求,直接走后端(不管境内境外)
use_backend test_backends if test_de

关键修改点解释

  1. 重定向规则加排除条件:在redirect指令的unless里新增test_de,意思是「如果请求来自土耳其,或者请求的是lbde.test.com,就不执行重定向」,彻底切断循环的可能。
  2. 补全境内访问lbde的规则:加上use_backend test_backends if acl_tr test_de,确保土耳其用户即使直接访问lbde.test.com也能正常走后端(如果不需要这个逻辑,可以删掉,但建议保留以覆盖所有场景)。

验证逻辑

  • 土耳其用户访问lbtest.test.com:匹配acl_tr+test_hname,直接走后端,无重定向
  • 境外用户访问lbtest.test.com:不满足acl_tr和test_de,触发重定向到lbde.test.com
  • 境外用户访问lbde.test.com:匹配test_de,直接走后端,不会再被重定向,循环终止

内容的提问来源于stack exchange,提问作者Meth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:42:49