HAProxy 2.4如何配置保留参数的HTTPS URI路径前缀追加重定向
HAProxy 2.4 HTTPS重定向正确配置
核心配置修正
你原有配置的问题主要是:
- 未正确定义
host_partnerACL规则导致匹配不生效 - frontend和backend中存在重复冲突的重定向规则
- 未正确利用
prefix参数自动拼接原路径和查询参数的特性
首先清理原有冗余配置,替换为如下配置即可:
frontend IN bind *:443 ssl crt /etc/haproxy/ssl/cert.pem mode http option httplog # 正确定义两个路径匹配ACL acl path_status path_beg /status acl path_partner path_beg /partner/transparent # 重定向规则,prefix会自动拼接原请求完整路径+查询参数,无需手动处理参数 http-request redirect code 302 prefix https://2.2.2.2/my.FrontEnd.ServiceProvider2 if path_status http-request redirect code 302 prefix https://2.2.2.2/my.FrontEnd.ServiceProvider2 if path_partner # 其他非重定向请求的后端规则写在这里,以上两个路径仅需重定向的话可以删除原有的对应use_backend规则 # use_backend other_backend if !path_status !path_partner
配置说明
- 优先使用302临时重定向测试,确认生效后再改为301永久重定向,避免浏览器缓存错误配置导致调试困难
- HAProxy的
redirect prefix指令会自动将原请求的完整URI(路径+查询参数)拼到你配置的前缀后面,无需手动正则提取参数,天然满足你保留所有请求参数的需求 - 请删除你原有配置中
backend status和backend partner里的所有http-request redirect规则,避免和frontend的重定向规则冲突,如果这两个后端没有其他用途可以直接删除
效果验证
配置重载后访问https://1.1.1.1/partner/transparent?a=1&b=2会自动302跳转到https://2.2.2.2/my.FrontEnd.ServiceProvider2/partner/transparent?a=1&b=2,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Dmitry
相关产品推荐
相关产品推荐

