API 文档

文档中心 > 负载均衡 > 负载均衡监听器 > 七层转发域名和 URL 规则说明

七层转发域名和 URL 规则说明

最近更新时间:2020-09-24 19:20:18

业务流程图

负载均衡(原“应用型负载均衡”)的七层业务流程及四层业务流程如下所示:

使用负载均衡的七层转发 HTTP/HTTPS 协议时,在一个 CLB 实例的监听器中新建转发规则,用户可以添加一个对应的域名。

  • 当用户仅建立了一条转发规则时,访问 VIP + URL 可以对应相应的转发规则,并正常访问服务。
  • 当用户建立了多条转发规则时,此时访问 VIP + URL 不能确保访问到某一个具体的域名 + URL,需要用户直接访问域名 + URL 来确保具体的转发规则生效。即用户配置多条转发规则时,同一个 VIP 对应了多条域名,此时不建议通过 VIP + URL 访问服务,而应该通过具体的域名 + URL 访问服务。

七层转发配置说明

转发域名配置规则

七层负载均衡可以将来自不同域名和 URL 的请求转发到不同的服务器上处理,一个七层监听器可以配置多个域名,一个域名可以配置多条转发路径。转发域名的配置方式请参考 配置负载均衡的转发域名

  • 转发域名长度限制:1 - 80个字符。
  • 不能以 _ 开头。
  • 支持精准域名,如 www.example.com
  • 支持通配域名,目前仅支持 *.example.com 或者 www.example.*的形式,即 * 在开头或结尾,且单个域名中仅支持 * 出现一次。
  • 非正则表达式的转发域名,支持的字符集为:a-z 0-9 . - _
  • 转发域名支持正则表达式,正则表达式的域名:
    • 支持的字符集为:S a-z 0-9 . - ? = ~ _ - + \ ^ * ! $ & | ( ) [ ]
    • 需以 ~ 开头,且 ~ 仅能出现一次。
    • 负载均衡支持的正则域名举例如下:~^www\d+\.example\.com$

转发域名匹配说明

转发域名通用匹配策略

  1. 转发规则中不配置域名,填写 IP 代替,并在转发组中配置多个 URL,该服务通过 VIP + URL 进行访问。
  2. 转发规则中配置完整域名,并在转发组中配置多个 URL,服务通过域名 + URL 进行访问。
  3. 转发规则中配置通配符域名,并在转发组中配置多个 URL,通过匹配请求域名 + URL 进行访问。当用户希望不同的域名能够指向相同的 URL 地址时,可以参照这种方式进行配置。以 example.qcould.com 为例,格式如下所示:
    • example.qcloud.com 精确匹配 example.qcloud.com 域名。
    • *.qcloud.com 匹配所有以 qcloud.com 结尾的域名。
    • example.qcloud.* 匹配所有以 example.qcloud 开头的域名。
  4. 转发规则中配置域名,并在转发组中配置模糊匹配的 URL。使用前缀匹配,可在最后加入通配符 $ 进行完整匹配。
    例如,用户通过配置转发组 URL ~*.(gif|jpg|bmp)$,希望匹配任何以 gifjpgbmp 结尾的文件。

转发域名中的默认域名策略

当客户端请求没有匹配本监听器的任何域名时,CLB 会将请求转发给默认域名(Default Server),让默认规则可控,每个监听器下只能配置一个默认域名。
例如,在 CLB1 的 HTTP:80 监听器下配置了2个域名: www.test1.comwww.test2.com,其中 www.test1.com 是默认域名。当用户访问 www.example.com 时,由于没有匹配到任何一个域名,CLB会将该请求转发给默认域名 www.test1.com

说明:

  • 2020年05月18日之前,七层监听器是否配置默认域名为可选项,您可以选择配置默认域名或者不配置。
    • 如果您的七层监听器已配置默认域名,未匹配其他规则的客户端请求会被转发到默认域名。
    • 如果您的七层监听器未配置默认域名,未匹配其他规则的客户端请求则会被转发到 CLB 加载的第一个域名,由于加载顺序与控制台配置顺序可能不一致,因此不一定是控制台配置的第一个。
  • 自2020年05月18日起:
    • 所有新建的七层监听器都必须配置默认域名:七层监听器的第一个规则一定会启用默认域名,调用 API 创建七层规则时,CLB会 将 DefaultServer 字段自动设置为 true。
    • 所有已配置默认域名的监听器,修改或删除默认域名时需指定新的默认域名:控制台操作时需您指定新的默认域名;调用 API 操作时,若不设置新的默认域名 CLB 会自动将剩余域名中创建时间最早的设置为新的默认域名。
    • 存量未配置默认域名的规则:您可以按业务需求直接配置默认域名,操作步骤如下“操作四”;若您不配置,腾讯云会将 CLB 加载的第一个域名设置为默认域名,存量监听器会在2020年06月19日内处理完毕。

上述策略自2020年05月18日起逐步实施,各个实例生效日可能略有差异。自2020年06月20日起,所有转发域名不为空的七层监听器都会有默认域名。

默认域名的有如下四项相关操作:

  • 操作一:当为七层监听器配置第一条转发规则时,默认域名必须是开启状态。
  • 操作二:关闭当前默认域名。
    • 某监听器下有多个域名,关闭当前默认域名时,需指定新的默认域名。
    • 当某监听器只有一个域名,且该域名是默认域名时,不允许关闭默认域名。
  • 操作三:删除默认域名。
    • 某监听器下有多个域名,删除默认域名下的规则:
      • 若该规则不是默认域名的最后一条规则,可以直接删除。
      • 若该规则是默认域名的最后一条规则,需设置新的默认域名。
    • 当某监听器只有一个域名时,可以直接删除所有规则且不必设置新的默认域名。
  • 操作四:修改默认域名,您可以在监听器列表快捷修改默认域名。

转发 URL 路径配置规则

七层负载均衡可以将来自不同 URL 的请求转发到不同的服务器上处理,一个域名可以配置多条转发 URL 路径。

  • 转发 URL 长度限制:1 - 200个字符。
  • 非正则表达式的转发 URL ,必须以 / 开头,支持的字符集为:a-z A-Z 0-9 . - _ / = ? :
  • 转发 URL 支持正则表达式:
    • 正则表达式的 URL,需以 ~ 开头,且 ~ 仅能出现一次。
    • 正则表达式的 URL 支持的字符集为: a-z A-Z 0-9 . - _ / = ? ~ ^ * $ :
    • 正则表达式的 URL 举例如下:~* .png$
  • 转发 URL 匹配规则如下:
    • = 开头表示精确匹配。
    • ^~ 开头表示 URL 以某个常规字符串开头,不是正则匹配。
    • ~开头表示区分大小写的正则匹配。
    • ~* 开头表示不区分大小写的正则匹配。
    • / 通用匹配,如果没有其它匹配,任何请求都会匹配到。

转发 URL 路径匹配说明

  1. 匹配规则:按最长前缀匹配,优先精确匹配,而后模糊匹配。
    例如,依照上图配置转发规则及转发组后,如下请求将依次被匹配到不同的转发规则中:
    1. example.qloud.com/test1/image/index1.html 精确匹配转发规则1设置的 URL 规则,则该请求将被转发到转发规则1所关联的后端云服务器中,即图中 CVM1 和 CVM2 的80端口。
    2. example.qloud.com/test1/image/hello.html 无精确匹配,按最长前缀将匹配到转发规则2,因此该请求将被转发到转发规则2所关联的后端云服务器中,即图中 CVM2 和 CVM3 的81端口。
    3. example.qloud.com/test2/video/mp4/ 无精确匹配,按最长前缀将匹配到转发规则3,因此该请求将被转发到转发规则3所关联的后端云服务器中,即图中 CVM4 的90端口。
    4. example.qloud.com/test3/hello/index.html 无精确匹配,按最长前缀将匹配到根目录 Default URL:example.qloud.com/,这时是 Nginx 转发请求给后端应用服务器,如 FastCGI(php),Tomcat(jsp),Nginx 作为反向代理服务器存在。
    5. example.qloud.com/test2/无精确匹配,按最长前缀将匹配到根目录 Default URL:example.qloud.com/
  2. 如果用户设置的 URL 规则中,服务不能正常运行,则匹配成功后,不会重定向到其他页面。
    例如,客户端请求 example.qloud.com/test1/image/index1.html 匹配了转发规则1,但此时转发规则1的后端服务器运行异常,出现404的页面时,用户进行访问时页面则会显示404,不会重定向到其他页面。
  3. 建议用户设置 Default URL,将其指向服务稳定的页面(如静态页面、首页等),并绑定所有后端云服务器。此时,如果所有规则均没有匹配成功时,系统会将请求指向 Default URL 所在的页面,否则可能会出现404的问题。
  4. 如果用户未设置 Default URL,且所有转发规则都不匹配时,此时访问服务,会返回404。
  5. 七层 URL 路径末尾斜杠的说明:当用户设置的 URL 是以/结尾,但客户端访问时并没有带/,那么该请求会被重定向到以/结尾的规则(301重定向)。
    例如,HTTP:80 监听器下,配置的域名是 www.test.com
    1. 该域名下设置的 URL 为/abc/
      • 客户端访问 www.test.com/abc 时,会被重定向到 www.test.com/abc/
      • 客户端访问 www.test.com/abc/ 时,会匹配到 www.test.com/abc/
    2. 该域名下设置的 URL 为/abc
      • 客户端访问 www.test.com/abc 时,会匹配到 www.test.com/abc
      • 客户端访问 www.test.com/abc/ 时,也会匹配到 www.test.com/abc

七层健康检查配置说明

健康检查域名配置规则

健康检查域名是七层负载均衡探测后端服务健康状态的域名。

  • 健康检查域名长度限制:1 - 80个字符。
  • 健康检查域名默认为转发域名。
  • 健康检查域名不支持正则表达式,当您的转发域名为通配域名时,需要指定某一固定域名(非正则)为健康检查域名。
  • 健康检查域名支持的字符集为:a-z 0-9 . - _

健康检查路径配置规则

健康检查路径是七层负载均衡探测后端服务健康状态的 URL 路径。

  • 健康检查路径长度限制:1 - 200个字符。
  • 健康检查路径默认为 /,且必须以 / 开头。
  • 健康检查路径不支持正则表达式,建议指定某个固定 URL 路径(静态页面)进行健康检查。
  • 健康检查路径支持的字符集为:a-z A-Z 0-9 . - _ / = ? :
目录