全部产品
Search
文档中心

负载均衡:转发规则配置示例与域名路径匹配规则

更新时间:May 13, 2026

本文提供ALB转发规则的常见场景配置示例,并介绍域名和路径的匹配规则、重写与重定向的路径增强配置规则。

常见场景配置示例

场景一:HTTP强制跳转HTTPS

将用户的HTTP请求自动跳转到HTTPS,确保数据传输加密。需要为HTTP监听(端口80)添加一条转发规则。

参数

说明

转发条件

选择路径精确匹配及通配符并输入/*

转发动作

选择重定向至

  • 协议:选择HTTPS

  • 域名${host}

  • 端口:输入已创建的HTTPS协议监听端口,例如443

  • 路径${path}

  • 查询${query}

  • 状态码:选择301

效果:用户访问http://www.example.com/page时,浏览器自动跳转到https://www.example.com/page

该规则需要配置在HTTP监听(端口80)上。同时,请确保已创建HTTPS监听(端口443)并关联了有效的SSL证书。完整的前提条件和操作步骤,请参见使用ALB将HTTP访问重定向至HTTPS

场景二:同域名按路径分流到不同后端

同一个域名下,将不同路径的请求转发到不同的服务器组。例如将API请求和静态资源请求分别转发到不同的后端。

规则1:将/api/*的请求转发到API服务器组。

参数

说明

转发条件

选择路径精确匹配及通配符并输入/api/*

转发动作

选择转发至,然后选择API服务器组。

规则2:将/static/*的请求转发到静态资源服务器组。

参数

说明

转发条件

选择路径精确匹配及通配符并输入/static/*

转发动作

选择转发至,然后选择静态资源服务器组。

ALB按转发规则的编号顺序逐条匹配。请将更具体的路径规则排在前面(编号更小),避免被通配符规则优先匹配。例如,/api/v2/*应排在/api/*之前。

场景三:多域名转发到不同后端

在同一个ALB实例上托管多个域名,将不同域名的请求转发到各自的后端服务器组。

规则1:将www.example.com的请求转发到Web服务器组。

参数

说明

转发条件

选择域名精确匹配及通配符并输入www.example.com

转发动作

选择转发至,然后选择Web服务器组。

规则2:将api.example.com的请求转发到API服务器组。

参数

说明

转发条件

选择域名精确匹配及通配符并输入api.example.com

转发动作

选择转发至,然后选择API服务器组。

场景四:去除路径前缀后转发

将请求路径中的特定前缀去除后转发到后端,同时支持匹配前缀后的多层路径。例如,ALB转发www.example.com/api/aaa/bbb/...的访问请求时,需要在路径中去除/api部分,同时支持匹配/api后的多层路径。

重写在ALB内部完成路径替换,客户端浏览器地址栏不变;重定向会向客户端返回一个新的URL,浏览器地址栏会更新为新地址。如果仅需后端收到去除前缀后的路径,使用重写;如果需要客户端感知到URL变化,使用重定向

重写

参数

说明

转发条件

域名

精确匹配及通配符并输入www.example.com

路径

正则匹配|不区分大小写并输入^/api/(.*)

转发动作

重写

  • 域名${host}

  • 路径/${1}

  • 查询${query}

转发至

选择目标服务器组。

重定向

参数

说明

转发条件

域名

精确匹配及通配符并输入www.example.com

路径

正则匹配|不区分大小写并输入^/api/(.*)

转发动作

重定向至

  • 协议${protocol}

  • 域名${host}

  • 端口${port}

  • 路径/${1}

  • 查询${query}

  • 状态码:选择301

效果:用户访问www.example.com/api/aaa/bbb/...时,后端服务器收到的请求路径为/aaa/bbb/...

场景五:裸域名跳转到www子域名

将裸域名(如example.com)的访问跳转到www.example.com,统一入口便于SEO和管理。

参数

说明

转发条件

选择域名精确匹配及通配符并输入example.com

转发动作

选择重定向至

  • 协议${protocol}

  • 域名:输入www.example.com

  • 端口${port}

  • 路径${path}

  • 查询${query}

  • 状态码:选择301

效果:用户访问example.com时,浏览器自动跳转到www.example.com,协议和端口保持不变。

如果还需要同时将HTTP跳转到HTTPS,请配合场景一使用。

场景六:通配符域名匹配

使用通配符域名统一匹配所有子域名,将请求转发到同一个服务器组。

参数

说明

转发条件

选择域名精确匹配及通配符并输入*.example.com

转发动作

选择转发至,然后选择目标服务器组。

效果a.example.comb.example.comtenant1.example.com等所有子域名的请求都会转发到同一个服务器组。

如果需要某个特定子域名转发到不同的服务器组,请将该精准域名规则的编号设置在通配符规则之前。ALB不会自动按域名精确程度排序,而是按规则编号顺序匹配。

场景七:基于HTTP标头灰度发布

通过HTTP标头实现灰度发布,将带有特定标头的请求转发到新版本服务器组,其他请求仍然转发到旧版本。

规则1(灰度规则,编号靠前):将携带X-Canary: true的请求转发到新版本服务器组。

参数

说明

转发条件

选择HTTP标头,键设置为X-Canary,值设置为true

转发动作

选择转发至,然后选择新版本服务器组。

规则2(默认规则,编号靠后):不携带该标头的请求继续转发到旧版本服务器组。可通过监听的默认转发规则实现。

效果:客户端请求携带X-Canary: true标头时,流量转发到新版本服务器组;未携带该标头的请求仍转发到旧版本服务器组。

灰度规则的编号必须小于默认规则,确保灰度流量被优先匹配。关于基于Cookie和服务器组权重的灰度方式,请参见使用ALB实现灰度发布

转发条件的域名配置规则

ALB按转发规则编号的优先级顺序逐条匹配,命中即停,不会自动按域名的精确程度排序。此机制与CLB中"精确匹配 > 小范围通配 > 大范围通配"的自动排序不同。

例如,同一监听下有以下两条规则:

规则编号

转发条件

规则1(编号1)

域名 = *.example.com → 转发到服务器组A

规则2(编号2)

域名 = www.example.com → 转发到服务器组B

此时访问www.example.com将匹配规则1(通配符),而非规则2(精准域名),因为规则1编号更小。

正确做法:将精准域名规则的编号设置在通配符规则之前(即调换为规则1 = www.example.com,规则2 = *.example.com)。

域名配置规则

说明

精准匹配及通配符

  • 匹配说明

    • 精准匹配:请求的域名和设定的域名需完全一致。

    • 通配符匹配:请求的域名和设定的域名除通配符外需完全一致。

  • 输入条件

    域名长度限制为3~128个字符,只允许包含大小写英文字母、数字和.-?=~_+\^*!$&|()[]这些特殊字符,支持星号(*)和半角问号(?)作为通配符使用。

  • 示例

    请求的域名:www.example.com

    • 精准匹配:输入www.example.com匹配成功。

    • 通配符匹配:输入*.example.comwww.example.*匹配成功。

正则匹配

  • 匹配说明

    请求的域名和设定的域名根据正则表达式匹配。

  • 输入条件

    域名长度限制为3~128个字符,只允许包含大小写英文字母、数字和.-?=~_-+\^*!$&|()[]这些特殊字符。

  • 示例

    请求的域名:www.example.com

    不区分大小写:正则输入^www.example.com$匹配成功。

转发条件的路径配置规则

ALB的路径匹配规则与Nginx不同,ALB不支持路径最长匹配原则。例如,Nginx的常用配置为location /api,匹配location的方式为最长前缀匹配,ALB的最长前缀匹配需通过通配符实现。用户可以在ALB上配置/api/*(精准匹配及通配符)来达到相同的效果。

如果同一监听下有/api/*/api/v2/*两条规则,必须将/api/v2/*的规则编号设置在/api/*之前,否则所有请求都会被/api/*优先匹配。

路径配置规则

说明

精准匹配及通配符

  • 匹配说明

    • 精准匹配:请求的路径和设定的路径需完全一致。

    • 通配符匹配:请求的路径和设定的路径除通配符外需完全一致。

  • 输入条件

    必须以 / 开头,只允许包含大小写英文字母、数字和$-_.+/&~@:这些特殊字符,支持星号(*)和半角问号(?)作为通配符使用。

  • 示例

    请求的路径:/example/text

    • 精准匹配:输入/example/text匹配成功。

    • 通配符:输入/example/*匹配成功。

正则匹配

  • 匹配说明

    请求的路径和设定的路径根据正则表达式匹配。

  • 输入条件

    只允许包含大小写英文字母、数字和.-_/=?~^*$:()[]+|这些特殊字符 。

  • 示例

    请求的路径:/api/v2/Users

    • 区分大小写:正则匹配输入^/api/(.*)/Users$时,路径匹配成功。

    • 不区分大小写:正则匹配输入^/api/(.*)/users$时,路径匹配成功。

重写和重定向中路径的增强配置规则

转发条件的路径配置正则表达式后,转发动作中的重写和重定向的路径支持正则表达式替换。

  • 注意事项

    • 转发条件中正则表达式中包含的半角圆括号( )需要与转发动作中重写或重定向路径中$变量的个数保持一致。

    • 转发动作中重写或重定向的路径中需要包含${1}${2}${3}中的一个或多个,且这三个变量不支持使用其他字符代替。

  • 替换原理

    1. 路径匹配:客户端发送请求,并匹配到某一条路径转发规则的正则表达式。

    2. 提取与替换:按照正则表达式的规范提取,将前三个半角圆括号( )提取出来的内容分别保存至${1}${2}${3}中,用于在转发动作的重写或重定向路径中替换。

    3. 拼接:按照转发动作中重写或重定向路径的配置,对其中的${1}${2}${3}进行值的替换,最终拼接成重写或重定向的实际路径。

    编号

    步骤

    示例

    1

    配置转发规则中的转发条件和转发动作。

    • 转发条件路径:/app/(.*)/(.*)/settings

    • 转发动作重写或重定向路径:/${1}/${2}

    2

    客户端发送请求,并匹配路径。

    • 客户端发送的请求路径:/app/users/profile/settings

    • 匹配到的转发条件路径:/app/(.*)/(.*)/settings

    3

    提取与替换

    按照正则表达式规范,转发条件路径中的两个(.*)分别提取到usersprofile,并分别保留至转发动作中重写或重定向路径中的${1}和${2}。

    • ${1}替换为users

    • ${2}替换为profile

    4

    拼接路径

    后端服务器接收到的路径:/users/profile

  • 配置示例

    您可以根据注意事项和替换原理,在控制台上添加转发规则。

    示例1:转发动作重写转发至

    以下示例将路径/app/users/profile/settings重写为/users/profile后转发到后端。其中,正则表达式/app/(.*)/(.*)/settings通过两个捕获组分别提取usersprofile,然后在重写路径中使用${1}/${2}拼接成最终路径。

    配置项

    说明

    转发条件

    路径

    选择正则匹配|不区分大小写并输入正则表达式/app/(.*)/(.*)/settings

    例如:客户端请求路径为/app/users/profile/settings,将匹配该规则,捕获组分别提取usersprofile,对应${1}${2}

    转发动作

    重写

    • 域名${host}

    • 路径/${1}/${2}

    • 查询${query}

    查询的内容指URL中问号后面的部分。示例:URL为www.example.com/test/test1?x=1查询的内容为x=1

    转发至

    在服务器组列表中选择目标服务器组。

    示例2:转发动作为重定向

    以下示例将路径/app/users/profile/settings重定向为/users/profile。与示例1不同的是,重定向会返回301状态码,浏览器地址栏的URL会发生变化。

    配置项

    说明

    转发条件

    路径

    选择正则匹配|不区分大小写并输入正则表达式/app/(.*)/(.*)/settings

    例如:客户端请求路径为/app/users/profile/settings,将匹配该规则,捕获组分别提取usersprofile,对应${1}${2}

    转发动作

    重定向至

    • 协议${protocol}

    • 域名${host}

    • 端口${port}

    • 路径/${1}/${2}

    • 查询${query}

    • 状态码301

常见问题

如何仅重写域名而不修改路径?

如果您需要将请求的域名重写为另一个域名,但保持路径和查询字符串不变,可以按照以下方式配置:

  • 转发条件:域名设置为原始域名,如old.example.com

  • 转发动作:重写,域名设置为新域名(如new.example.com),路径设置为${path}(保持原路径),查询设置为${query}(保持原查询字符串)。同时配置转发至目标服务器组。

如何为路径添加前缀?

如果您需要在原始路径前添加版本号等前缀,例如将/users/list重写为/v2/users/list,可以按照以下方式配置:

  • 转发条件:路径正则匹配设置为^/(.*)

  • 转发动作:重写,路径设置为/v2/${1}。同时配置转发至目标服务器组。

配置后,请求/users/list将被重写为/v2/users/list后转发至后端服务器。

如何去除路径中的特定前缀?

请参见本文的场景四:去除路径前缀后转发。该场景以/api/*为例,展示了使用正则匹配 + 重写或重定向去除前缀的完整配置。

转发规则匹配不上/路由不对怎么排查?

如果配置了转发规则但请求没有按预期路由,可按以下步骤排查:

  1. 检查规则编号顺序:ALB按规则编号从小到大逐条匹配,命中即停。如果一条更宽泛的规则编号排在前面,后面更精确的规则将不会被匹配到。

  2. 检查匹配类型:确认使用了正确的匹配类型(精准匹配、通配符、正则)。例如,精准匹配/api不会匹配/api/users,需要使用通配符/api/*

  3. 检查多条件组合:一条转发规则配置多个转发条件时,不同类型的条件之间为"与"(AND)关系,同一类型条件的多个值之间为"或"(OR)关系。详细说明请参见配置监听转发规则

  4. 查看访问日志:通过ALB访问日志的hostrequest_uri字段,确认ALB收到的实际请求内容是否与预期一致。

重写和重定向有什么区别?该选哪个?

对比项

重写(Rewrite)

重定向(Redirect)

浏览器地址栏

不变(用户无感知)

变化为新URL

处理方式

ALB内部修改请求路径后转发到后端,一次请求完成

ALB返回3xx状态码,浏览器发起第二次请求访问新URL

适用场景

去除路径前缀、添加版本号等内部路径调整

HTTP→HTTPS跳转、裸域→www跳转、旧URL迁移

是否需要配合转发至

是,重写必须同时配置"转发至"目标服务器组

否,重定向独立生效

相关文档

如果您需要为ALB监听配置其他监听转发规则,请参见配置监听转发规则