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

HAProxy 1.7:通过映射文件实现特定域名重定向与URI重写问询

嘿,作为HAProxy新手,用映射文件来管理重定向和URI重写绝对是个聪明的选择——这种方式把规则集中在单独文件里,修改起来不用动主配置,特别灵活!我来一步步给你拆解实现方法:

一、用映射文件实现域名重定向

1. 编写redirect.map规则文件

先创建一个映射文件,格式很简单:每行是源域名 + 空格 + 目标重定向地址,注释用#开头。按照你的需求,文件内容可以这样写:

# redirect.map - 域名重定向规则
abc.com  https://new-abc.example.com
def.ru   https://def-new.example.ru
# asd.com 不需要重定向,所以这里不用写规则

2. 在HAProxy主配置里加载映射并配置重定向逻辑

打开你的HAProxy配置文件(通常是/etc/haproxy/haproxy.cfg),在frontend段里添加加载映射和触发重定向的规则:

frontend main
    bind *:80
    # 先加载映射文件
    # 匹配请求的Host头,如果在映射文件里能找到对应值,就跳转到redirect_backend
    use_backend redirect_backend if { hdr(host),map(/etc/haproxy/redirect.map) -m found }

# 专门处理重定向的backend
backend redirect_backend
    # 从映射文件里取出对应的目标地址,返回301永久重定向
    redirect location %[hdr(host),map(/etc/haproxy/redirect.map)] code 301

原理很简单:当用户请求abc.com或def.ru时,HAProxy会匹配到映射文件里的规则,进入redirect_backend返回重定向响应;而asd.com不在映射文件里,不会触发这个backend,自然就不会执行重定向。

二、HAProxy支持用映射文件实现URI重写吗?当然可以!

用映射文件管理URI重写和域名重定向逻辑类似,同样是先写映射规则,再在主配置里调用。

1. 编写uri_rewrite.map规则文件

文件格式是源URI + 空格 + 目标URI,比如:

# uri_rewrite.map - URI重写规则
/old-product-page  /new-catalog/item123
/blog/2023/post  /articles/tech/archive/2023

如果需要前缀匹配(比如所有以/old-api/开头的URI都重写到/new-api/),可以把规则写成:

/old-api/  /new-api/

2. 在HAProxy配置里配置URI重写

在frontend或者backend段里添加http-request set-path指令,实现URI替换:

frontend main
    bind *:80
    # 加载URI重写映射:如果请求的path在映射里有匹配,就替换成目标值;没匹配到就用原path
    http-request set-path %[path,map(/etc/haproxy/uri_rewrite.map,%[path])]

如果是前缀匹配的场景,把map改成map_beg(匹配path开头):

http-request set-path %[path,map_beg(/etc/haproxy/uri_prefix_rewrite.map,%[path])]

比如上面的前缀规则,/old-api/user/1就会被重写成/new-api/user/1。

一些实用小提示

  • 修改映射文件后,不需要重启HAProxy,执行haproxy -f /etc/haproxy/haproxy.cfg -sf $(pidof haproxy)就能平滑重载配置,不影响业务。
  • 每次修改配置后,先用haproxy -c -f /etc/haproxy/haproxy.cfg检查语法,避免配置错误导致服务中断。
  • 重定向的状态码:301是永久重定向(适合长期迁移),302是临时重定向(适合短期调整),根据你的业务需求选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:44:48