HTTP 请求重写将应用于来自客户端的 HTTP 请求。

前提条件

确认第 7 层 HTTP 虚拟服务器可用。请参见添加第 7 层 HTTP 虚拟服务器

负载均衡器规则支持 REGEX 匹配类型。支持 PCRE 样式 REGEX 模式,但高级用例存在一些限制。在匹配条件中使用 REGEX 时,支持已命名捕获组。请参见负载均衡器规则中的正则表达式

过程

  1. 打开第 7 层 HTTP 虚拟服务器。
  2. 在“负载均衡器规则”部分中,单击“请求重写阶段”旁边的设置 > 添加规则以配置 HTTP 请求重写阶段的负载均衡器规则。
  3. 从下拉列表中,选择一个匹配条件。匹配条件用于匹配通过负载均衡器传递的应用程序流量。可以在一个负载均衡器规则中指定多个匹配条件。每个匹配条件定义应用程序流量的一个条件。
    支持的匹配条件 说明
    HTTP 请求方法 与 HTTP 请求方法匹配。

    http_request.method - 要匹配的值

    HTTP 请求 URI 与不带查询参数的 HTTP 请求 URI 匹配。

    http_request.uri - 要匹配的值

    HTTP 请求 URI 参数

    用于匹配 URI 参数(又称 HTTP 请求消息的查询字符串),例如,在 URI http://exaple.com?foo=1&bar=2 中,“foo=1&bar=2”是包含 URI 参数的查询字符串。在 URI 方案中,查询字符串的表示形式为以第一个问号(“?”)字符开始,并以数字符号(“#”)字符或 URI 末尾结束。

    http_request.uri_arguments - 要匹配的值

    HTTP 请求版本 用于匹配 HTTP 请求消息的 HTTP 协议版本

    http_request.version - 要匹配的值

    HTTP 请求标头 用于按 HTTP 标头字段匹配 HTTP 请求消息。HTTP 标头字段是 HTTP 请求和响应消息的标头部分的组件。它们定义 HTTP 事务的操作参数。

    http_request.header_name - 要匹配的标头名称

    http_request.header_value - 要匹配的值

    HTTP 请求 Cookie 用于按 Cookie(即特定类型的 HTTP 标头)匹配 HTTP 请求消息。match_type 和 case_sensitive 定义如何比较 Cookie 值。

    http_request.cookie_value - 要匹配的值

    HTTP 请求正文 与 HTTP 请求正文内容匹配。

    http_request.body_value - 要匹配的值

    客户端 SSL 与客户端 SSL 配置文件 ID 匹配。

    ssl_profile_id - 要匹配的值

    TCP 标头端口 与 TCP 源或目标端口匹配。

    tcp_header.source_port - 要匹配的源端口

    tcp_header.destination_port - 要匹配的目标端口
    IP 标头源 与 HTTP 消息中的 IP 标头字段匹配。源类型必须是单个 IP 地址、一系列 IP 地址或者一个组。请参见添加组
    • 如果选择了源类型为 IP 地址的 IP 标头源,则 HTTP 消息的源 IP 地址应与在组中配置的 IP 地址相匹配。支持 IPv4 地址和 IPv6 地址。
    • 如果选择了源类型为组的 IP 标头源,请从下拉列表中选择该组。

    ip_header.source_address - 要匹配的源地址

    ip_header.destination_address - 要匹配的目标地址
    变量 创建一个变量并向该变量分配值。
    区分大小写 设置区分大小写的标记进行 HTTP 标头值比较。如果为 true,则在比较 HTTP 正文值时,需要区分大小写。
  4. 从下拉菜单中,选择匹配类型:开头为、结尾为、等于、包含或匹配正则表达式。匹配类型用于将条件与指定的操作相匹配。
    匹配类型 说明
    开头为 如果匹配条件以指定的值开头,则条件匹配。
    结尾为 如果匹配条件以指定的值结尾,则条件匹配。
    等于 如果匹配条件与指定的值相同,则条件匹配。
    包含 如果匹配条件包含指定的值,则条件匹配。
    匹配正则表达式 如果匹配条件与指定的值匹配,则条件匹配。
  5. 指定 URI。
  6. 从下拉菜单中,选择一个匹配策略
    匹配策略 说明
    任意 表示对于此规则,只要主机和路径中的任一项匹配,即可视为匹配项。
    全部

    表示对于此规则,只有主机和路径全都匹配,才可视为匹配项。

  7. 从下拉菜单中选择一个操作:
    操作 说明
    HTTP 请求 URI 重写

    此操作用于重写匹配的 HTTP 请求消息中的 URI。在此条件中指定 URI 和 URI 参数,以将匹配的 HTTP 请求消息的 URI 和 URI 参数重写为新值。HTTP 消息的完整 URI 方案采用以下语法:Scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]。此操作的“URI”字段用于重写上述方案中的 /path 部分。“URI 参数”字段用于重写 query 部分。可以在“URI”字段和“URI 参数”字段中使用捕获的变量和内置变量。

    1. 输入 HTTP 请求的 URI
    2. 输入 URI 的查询字符串(通常包含键值对),例如:foo1=bar1&foo2=bar2。
    HTTP 请求标头重写

    此操作用于将匹配的 HTTP 请求消息的标头字段重写为指定的新值。

    1. 输入 HTTP 请求消息标头文本框的名称。
    2. 输入标头值。
    HTTP 请求标头删除

    此操作用于在 HTTP_REQUEST_REWRITE 阶段删除 HTTP 请求消息的标头字段。可以使用一个操作删除具有相同标头名称的所有标头。要删除具有不同标头名称的标头,必须定义多个操作。

    • 输入 HTTP 请求消息的标头字段的名称。
    变量分配 创建一个变量,并为其分配名称和值。
  8. 切换区分大小写按钮以设置区分大小写的标记进行 HTTP 标头值比较。
  9. 切换反转按钮以将其启用。
  10. 依次单击保存应用