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

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

最近更新时间:2019-10-12 14:11:40

业务流程图

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

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

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

转发规则配置说明

域名配置规则

负载均衡七层监听器的转发规则配置域名时,支持正则表达式,长度限制为1 - 120。

  • 非正则的域名支持的字符集如下:
    a-z 0-9 . -
  • 通配的域名,目前仅支持
    *.example.com 或者 www.example.* 的形式,且单个域名中仅支持 * 出现一次。
  • 域名的正则表达式中不支持的字符集如下:
    " { } ; ~ ' ` 空格
  • 负载均衡支持的正则域名举例如下:
    ~^www\d+\.example\.com$

健康检查配置规则

  • 当用户填写的域名为通配域名时,需要指定某一固定域名(非正则)为健康检查域名。该健康检查域名配置支持的字符集如下:
    a-z 0-9 . -
  • 负载均衡七层监听器配置健康检查的路径时,默认 /,必须以 / 开头,长度限制为1 - 120。暂不支持正则表达,建议指定某个固定 URL 路径(静态页面)进行健康检查。其中,健康检查路径配置支持的字符集如下:
    a-z A-Z 0-9 . - / = ?

域名匹配规则

  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)$,希望匹配任何以 gif、 jpg 或 bmp 结尾的文件。
  5. 建议用户设置默认访问域名,当监听器中所有域名均没有匹配成功时,系统会将请求指向默认访问域名,让默认规则可控。设置默认访问域名的操作如下图所示:
    说明:

    • 如果客户端请求匹配所有转发规则均失败,则会匹配到默认访问(default_server);如果您的七层监听器没有配置默认访问,则会匹配到 CLB 加载的第一个域名(由于加载顺序与控制台配置顺序可能不一致,因此不一定是控制台配置的第一个)。
    • 如果您需要指定未匹配规则的访问域名,请务必给七层监听器配置默认访问。

转发组 URL 匹配规则说明

URL 配置规则

负载均衡七层监听器转发路径 URL,默认 /,必须以 / 开头,长度限制为1 - 120。

  • URL 支持正则表达,用如下方法判断:
    • = 开头表示精确匹配。
    • ^~ 开头表示 URL 以某个常规字符串开头,不是正则匹配。
    • ~开头表示区分大小写的正则匹配。
    • ~* 开头表示不区分大小写的正则匹配。
    • / 通用匹配, 如果没有其它匹配,任何请求都会匹配到。
  • 非正则的 URL 路径,以 / 开头,支持的字符集如下:
    a-z A-Z 0-9 . - / = ?
  • 正则的 URL,不支持的字符集如下:
    " { } ; \ ` ~ ' 空格

URL 匹配规则示例

  1. 匹配规则:优先精确匹配,之后依照规则模糊匹配。
    例如,依照上图配置转发规则及转发组后,如下请求将依次被匹配到不同的转发组中:
    1. example.qloud.com/test1/image/index1.html 由于精确匹配转发组1设置的 URL 规则,则该请求将被转发到转发组1所关联的后端云服务器中,即图中 RS1 和 RS2 的80端口。
    2. example.qloud.com/test1/image/hello.html 由于此请求无法精确匹配第一条规则,因此将继续匹配转发组2中的规则,发现模糊匹配成功。因此该请求将被转发到转发组2所关联的后端云服务器中,图中即 RS2 和 RS3 的81端口。
    3. example.qloud.com/test2/video/mp4/ 由于此请求无法精确匹配到前两条规则,因此将继续向下匹配,直至发现可以模糊匹配转发组 3 中的规则。因此该请求将被转发到转发组3所关联的后端云服务器中,图中即 RS4 的90端口。
    4. example.qloud.com/test3/hello/index.html 由于此请求无法匹配到前三个转发组中的规则,因此将匹配用户配置的最通用规则 Default URL。这时是 Nginx 转发请求给后端应用服务器,如 FastCGI(php),tomcat(jsp),Nginx 作为反向代理服务器存在。
    5. example.qloud.com/test2/ 由于请求无法精确匹配到前三个转发组中的规则,因此将匹配用户配置的通用规则 default URL
  2. 如果用户设置的 URL 规则中,服务不能正常运行,则匹配成功后,不会重定向到其他页面。
    例如,客户端请求example.qloud.com/test1/image/index1.html匹配了转发组1的 URL 规则,但此时转发组1的后端服务器运行异常,出现404的页面时,用户进行访问时页面则会显示404,不会跳转到其他页面。
  3. 建议用户设置 Default URL,将其指向服务稳定的页面(如静态页面、首页等),并绑定所有后端云服务器。此时,如果所有规则均没有匹配成功时,系统会将请求指向 Default URL 所在的页面,否则可能会出现404的问题。
  4. 如果用户未设置 Default URL,且所有转发规则都不匹配时,此时访问服务,会返回404。