HAProxy TCP模式下如何移除Authorization头末尾的Cg==?
解决方案
要在TCP模式的HAProxy中处理带换行符的Authorization头,需先让HAProxy识别并解析HTTP请求,再通过字符串替换移除末尾的Cg==。修改后的完整配置如下:
frontend HAproxy mode tcp # 识别HTTP请求,启用后续HTTP头处理能力 tcp-request content accept if HTTP # 保留原有捕获Authorization头的配置 tcp-request content capture req.hdr(Authorization) len 128 # 替换末尾带有Cg==的Authorization头 http-request replace-header Authorization ^(Basic .*)Cg==$ \1 backend server mode tcp server server1 172.16.1.1
关键说明:
tcp-request content accept if HTTP:TCP模式下HAProxy默认不解析HTTP头,这条指令让HAProxy仅对HTTP请求启用内容解析,是后续修改请求头的必要前提。http-request replace-header Authorization ^(Basic .*)Cg==$ \1:通过正则匹配以Basic开头且末尾为Cg==的Authorization头,将其替换为去掉Cg==的核心授权内容(\1对应正则中括号捕获的Basic加有效Base64编码部分)。
如果需要兼容回车换行(对应Base64编码DQo=)的场景,可将替换规则扩展为:
http-request replace-header Authorization ^(Basic .*)(Cg==|DQo=)$ \1
内容的提问来源于stack exchange,提问作者Nikolo
相关产品推荐
相关产品推荐

