HTTP 请求重写将应用于来自客户端的 HTTP 请求。
前提条件
确认第 7 层 HTTP 虚拟服务器可用。请参见添加第 7 层 HTTP 虚拟服务器。
负载均衡器规则支持 REGEX 匹配类型。支持 PCRE 样式 REGEX 模式,但高级用例存在一些限制。在匹配条件中使用 REGEX 时,支持已命名捕获组。请参见负载均衡器规则中的正则表达式。
过程
- 打开第 7 层 HTTP 虚拟服务器。
- 在“负载均衡器规则”部分中,单击“请求重写阶段”旁边的 以配置 HTTP 请求重写阶段的负载均衡器规则。
- 从下拉列表中,选择一个匹配条件。匹配条件用于匹配通过负载均衡器传递的应用程序流量。可以在一个负载均衡器规则中指定多个匹配条件。每个匹配条件定义应用程序流量的一个成员资格条件。
支持的匹配条件 描述 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 正文值时,需要区分大小写。 - 从下拉菜单中,选择匹配类型:开头为、结尾为、等于、包含或匹配正则表达式。匹配类型用于将条件与指定的操作相匹配。
匹配类型 描述 开头为 如果匹配条件以指定的值开头,则条件匹配。 结尾为 如果匹配条件以指定的值结尾,则条件匹配。 等于 如果匹配条件与指定的值相同,则条件匹配。 包含 如果匹配条件包含指定的值,则条件匹配。 匹配正则表达式 如果匹配条件与指定的值匹配,则条件匹配。 - 指定 URI。
- 从下拉菜单中,选择一个匹配策略:
匹配策略 描述 任意 表示对于此规则,只要主机和路径中的任一项匹配,即可视为匹配项。 全部 表示对于此规则,只有主机和路径全都匹配,才可视为匹配项。
- 从下拉菜单中选择一个操作:
操作 描述 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 参数”字段中使用捕获的变量和内置变量。
- 输入 HTTP 请求的 URI
- 输入 URI 的查询字符串(通常包含键值对),例如:foo1=bar1&foo2=bar2。
HTTP 请求标头重写 此操作用于将匹配的 HTTP 请求消息的标头字段重写为指定的新值。
- 输入 HTTP 请求消息标头文本框的名称。
- 输入标头值。
HTTP 请求标头删除 此操作用于在 HTTP_REQUEST_REWRITE 阶段删除 HTTP 请求消息的标头字段。可以使用一个操作删除具有相同标头名称的所有标头。要删除具有不同标头名称的标头,必须定义多个操作。
- 输入 HTTP 请求消息的标头字段的名称。
变量分配 创建一个变量,并为其分配名称和值。 - 切换区分大小写按钮以设置区分大小写的标记进行 HTTP 标头值比较。
- 切换反转按钮以将其启用。
- 依次单击保存和应用。