ALB配置域名和路径的转发规则

如果您需要为ALB监听的转发条件配置域名和路径规则,及转发动作配置重写和重定向的路径增强规则,本文为您介绍了详细的配置规则。

转发条件的域名配置规则

域名配置规则支持精准域名、通配符域名和正则表达式域名。关于如何添加转发规则,请参见添加转发规则

域名配置规则

说明

精准匹配及通配符

  • 匹配说明

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

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

  • 输入条件

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

  • 示例

    请求的域名:www.example.com

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

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

正则匹配

  • 匹配说明

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

  • 输入条件

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

  • 示例

    请求的域名:www.example.com

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

转发条件的路径配置规则

路径配置规则支持精准路径、通配符路径和正则表达式路径。关于如何添加转发规则,请参见添加转发规则

路径配置规则

说明

精准匹配及通配符

  • 匹配说明

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

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

  • 输入条件

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

  • 示例

    请求的路径:/example/text

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

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

    说明

    ALB的路径匹配规则与Nginx不同,ALB不支持路径最长匹配原则。

    例如,Nginx的常用配置为location /abc,匹配location的方式为最长前缀匹配,ALB的最长前缀匹配需通过通配符实现。您可以在ALB上配置/abc/*(精确匹配及通配符)来达到相同的效果。

正则匹配

  • 匹配说明

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

  • 输入条件

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

  • 示例

    请求的路径:/sys/aaa/HOST

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

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

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

转发条件的路径配置正则表达式后,转发动作中的重写和重定向的路径支持正则表达式替换。关于如何添加转发规则,请参见添加转发规则

说明

转发条件的路径正则配置规则,请参见转发条件的路径配置规则

  • 注意事项

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

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

  • 替换原理

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

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

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

    编号

    步骤

    示例

    1

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

    • 转发条件路径:/sys/(.*)/(.*)/aaa

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

    2

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

    • 客户端发送的请求路径:/sys/ccc/bbb/aaa

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

    3

    提取与替换

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

    • ${1}替换为ccc

    • ${2}替换为bbb

    4

    拼接路径

    后端服务器接收到的路径:/ccc/bbb

  • 配置示例

    您可以根据注意事项和替换原理,在控制台上添加转发规则。转发规则配置示例如下:

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

    类别

    说明

    如果以下条件全部匹配

    路径正则匹配

    • 匹配说明

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

    • 输入条件

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

    • 示例

      请求的路径:/sys/ccc/bbb/aaa

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

      • 不区分大小写:正则匹配输入/sys/(.*)/(.*)/aaa,路径匹配成功。

    转发动作

    重写

    • 域名${host}

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

    • 查询${query}

    转发至

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

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

    类别

    说明

    如果以下条件全部匹配

    路径正则匹配

    • 匹配说明

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

    • 输入条件

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

    • 示例

      请求的路径:/sys/ccc/bbb/aaa

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

      • 不区分大小写:正则匹配输入/sys/(.*)/(.*)/aaa,路径匹配成功。

    转发动作

    重定向

    • 协议$protocol

    • 域名${host}

    • 端口${port}

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

    • 查询${query}

    • 状态码301

相关文档

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