08-改写策略
本章节下载: 08-改写策略 (337.45 KB)
将匹配规则和改写动作关联起来就构成了改写策略。当用户流量与匹配规则匹配成功后,执行相应的改写动作。
改写策略需要在虚服务器页面引用后才能生效,虚服务器通过引用改写策略,可对匹配虚服务器的报文进行改写。
管理员可以在一个改写策略中指定多条匹配规则,转发报文时会按照配置顺序进行匹配。
· 当匹配方式为匹配任意一条规则时,与某条匹配规则匹配成功就执行改写动作,否则继续匹配下一条匹配规则,若所有匹配规则均未匹配成功,则不执行改写动作。
· 当匹配方式为匹配所有规则时,仅当所有规则都匹配成功时,才会执行改写动作,否则不执行改写动作。
设备支持多种类型的匹配规则,具体请参见表-1
类型 |
描述 |
源IP |
管理员可配置匹配用户源IP地址的IP地址范围或子网。若用户流量的源IP地址属于指定的地址范围或子网,则认为成功匹配该规则 |
入接口 |
管理员可指定流量的入接口。若用户流量从指定接口进入设备,则认为成功匹配该规则 |
Body |
管理员可配置匹配HTTP报文实体的正则表达式。若HTTP报文的实体偏移量后的部分能够匹配指定的正则表达式,则认为成功匹配该规则 |
Cookie |
管理员可配置匹配的HTTP Cookie名称和Cookie值的正则表达式。若HTTP报文中携带有指定名称的Cookie,且Cookie值匹配了指定的正则表达式,则认为成功匹配该规则 |
Header |
管理员可配置匹配的HTTP首部名称和首部值的正则表达式。若HTTP报文中携带有指定名称的首部,且首部值匹配了指定的正则表达式,则认为成功匹配该规则 |
URI |
管理员可配置匹配URI的正则表达式。若HTTP报文中携带的URI匹配了指定的正则表达式,则认为成功匹配该规则 |
Method |
管理员可指定匹配的HTTP方法,可指定RFC预定义的HTTP方法GET、CONNECT、DELETE、HEAD、OPTIONS、POST、PUT或TRACE,也可输入自定义HTTP方法。若HTTP报文中携带的方法匹配了指定方法,则认为成功匹配该规则 |
Version |
管理员可指定匹配的HTTP版本。若HTTP报文中携带的版本号匹配了指定版本号,则认为成功匹配该规则 |
对于规则匹配成功的报文,设备会为其执行指定的改写动作。设备支持多种改写动作,具体请参见表-2
类型 |
描述 |
URI重写 |
规则匹配成功后,将HTTP请求报文首部中包含指定内容的URI重写为新的URI |
Header插入 |
规则匹配成功后,在指定方向的HTTP报文中插入指定名称和内容的首部 |
Header删除 |
规则匹配成功后,如果指定方向的HTTP报文中携带有指定名称的首部,系统会将该首部从报文中删除 |
Header重写 |
规则匹配成功后,如果指定方向的HTTP报文中携带有指定名称的首部,系统会将该首部中的指定内容改写为新的内容 |
报文体重写 |
规则匹配成功后,将HTTP应答报文体的指定内容改写为新的内容 |
SSL URI重定向 |
规则匹配成功后,如果HTTP应答报文Location首部携带指定的URI和HTTP端口号,系统会将Location首部的URI由HTTP重写为HTTPS,并将原HTTP端口号重写为新的SSL端口号 |
非缺省vSystem对于本特性的支持情况,请以页面的实际显示为准。
1. 单击“应用负载 > 应用优化 > 改写策略”
2. 在“改写策略”页面单击<新建>按钮,新建改写策略。
表-3 改写策略配置
参数 |
说明 |
名称 |
改写策略的名称,不区分大小写 |
描述 |
改写策略的描述 |
类型 |
改写策略的类型,目前仅支持HTTP类型的改写策略 由于虚服务器只能引用与自身类型相同的改写策略,因此,配置的改写策略类型需要与虚服务器的类型一致 |
匹配方式 |
匹配规则的匹配方式,包括: · 匹配任意一条规则:只需匹配任意一条规则就算匹配成功 · 匹配所有规则:需要匹配所有规则才算匹配成功 |
匹配规则 |
流量的匹配规则,将报文按照一定规则进行匹配,以便为不同的报文执行不同的动作。管理员在可以在一个改写策略中指定多条匹配规则 · 类型:匹配规则的类型 · 字段:匹配的报文字段或偏移量 · 关键字:匹配内容,不同类型的匹配规则的匹配内容不同,请参见表-1 · 大小写:匹配正则表达式时,是否区分大小写 |
URI重写 |
将HTTP请求报文首部中包含指定内容的URI重写为新的URI · 匹配内容:要被改写的URI的正则表达式 · 改写内容:改写后的URI,支持以下改写变量: ○ %is:客户端侧的源IP地址 ○ %ps:客户端侧的源端口号 ○ %id:客户端侧的目的IP地址 ○ %pd:客户端侧的目的端口号 ○ %sps:服务器侧的源端口 ○ %spd:服务器侧的目的端口 ○ %sis:服务器侧的源IP地址 ○ %sid:服务器侧的目的IP地址 ○ %1-9:要被重写的URL中正则表达式取出的变量值,最多支持9个 ○ %{x509v}:证书的版本 ○ %{x509snum}:证书的序列号 ○ %{x509sigalgo}:证书的签名算法 ○ %{x509issuer}:证书的签发者 ○ %{x509before}:证书的有效时间(在此时间之前无效) ○ %{x509after}:证书的有效时间(在此时间之后无效) ○ %{x509sub}:证书的主题 ○ %{x509spktype}:证书的主题的公钥类型 ○ %{x509spk}:证书的主题的公钥 ○ %{x509spkRSA}:证书的主题的RSA公钥的长度(仅当公钥为RSA类型才有该字段) ○ %{x509hash}:客户端证书的MD5散列(指纹) ○ %{dncn}:颁发给 ○ %{dne}:电子邮件 ○ %{dno}:公司/机构 ○ %{dnou}:部门 ○ %{dnc}:国家 ○ %{dns}:州/省份 ○ %{dnl}:城市 · 编码方式:对改写变量的编码方式,包括: ○ 原文:即不对改写变量进行编码 ○ URI编码:只会对改写变量中的特殊字符进行编码,需要编码的特殊字符为:;、/、?、:、@、&、=、+、$、|、{、}、,、\、^、[、]、`、<、>、#、%、"、空格 ○ Base64编码:对整个改写变量进行编码 · 大小写:匹配正则表达式时,是否区分大小写 |
Header插入 |
在指定方向的HTTP报文中插入指定名称和内容的首部 · 方向:HTTP报文的方向,包括: ○ 双向:表示请求和应答方向的HTTP报文 ○ 请求:表示请求方向的HTTP报文 ○ 应答:表示应答方向的HTTP报文 · Header名称:要插入HTTP报文中的首部名称,包括标准和自定义的首部,不区分大小写。不允许输入(、)、<、>、@、,、;、:、\、"、/、[、]、?、=、{、}、SP(空格符)、HT(水平制表符),以及ASCII码中小于等于31、大于等于127的字符 · Header值:要插入HTTP报文中的首部内容。支持以下改写变量: ○ %is:客户端侧的源IP地址 ○ %ps:客户端侧的源端口号 ○ %id:客户端侧的目的IP地址 ○ %pd:客户端侧的目的端口号 ○ %sps:服务器侧的源端口 ○ %spd:服务器侧的目的端口 ○ %sis:服务器侧的源IP地址 ○ %sid:服务器侧的目的IP地址 ○ %{x509v}:证书的版本 ○ %{x509snum}:证书的序列号 ○ %{x509sigalgo}:证书的签名算法 ○ %{x509issuer}:证书的签发者 ○ %{x509before}:证书的有效时间(在此时间之前无效) ○ %{x509after}:证书的有效时间(在此时间之后无效) ○ %{x509sub}:证书的主题 ○ %{x509spktype}:证书的主题的公钥类型 ○ %{x509spk}:证书的主题的公钥 ○ %{x509spkRSA}:证书的主题的RSA公钥的长度(仅当公钥为RSA类型才有该字段) ○ %{x509hash}:客户端证书的MD5散列(指纹) ○ %{dncn}:颁发给 ○ %{dne}:电子邮件 ○ %{dno}:公司/机构 ○ %{dnou}:部门 ○ %{dnc}:国家 ○ %{dns}:州/省份 ○ %{dnl}:城市 · 编码方式:对改写变量的编码方式,包括: ○ 原文:即不对改写变量进行编码 ○ URI编码:只会对改写变量中的特殊字符进行编码,需要编码的特殊字符为:;、/、?、:、@、&、=、+、$、|、{、}、,、\、^、[、]、`、<、>、#、%、"、空格 ○ Base64编码:对整个改写变量进行编码 |
Header删除 |
删除指定方向的HTTP报文中指定名称的首部 · 方向:HTTP报文的方向,包括: ○ 双向:表示请求和应答方向的HTTP报文 ○ 请求:表示请求方向的HTTP报文 ○ 应答:表示应答方向的HTTP报文 · Header名称:待删除的HTTP报文首部的名称,包括标准和自定义的首部,需要与报文中的首部完全匹配,才能执行删除动作,不区分大小写。不允许输入(、)、<、>、@、,、;、:、\、"、/、[、]、?、=、{、}、SP(空格符)、HT(水平制表符),以及ASCII码中小于等于31、大于等于127的字符 |
Header重写 |
将指定方向的HTTP报文首部中的指定内容改写为新的内容 · 方向:HTTP报文的方向,包括: ○ 双向:表示请求和应答方向的HTTP报文 ○ 请求:表示请求方向的HTTP报文 ○ 应答:表示应答方向的HTTP报文 · Header名称:HTTP报文首部的名称,包括标准和自定义的首部,需要与报文中的首部完全匹配,才能执行重写动作。不区分大小写。不包括(、)、<、>、@、,、;、:、\、"、/、[、]、?、=、{、}、SP(空格符)、HT(水平制表符),以及ASCII码中小于等于31、大于等于127的字符 · Header值:要被改写的HTTP报文首部内容的正则表达式 · 替换成的资源串:改写后的内容。支持以下改写变量: ○ %is:客户端侧的源IP地址 ○ %ps:客户端侧的源端口号 ○ %id:客户端侧的目的IP地址 ○ %pd:客户端侧的目的端口号 ○ %sps:服务器侧的源端口 ○ %spd:服务器侧的目的端口 ○ %sis:服务器侧的源IP地址 ○ %sid:服务器侧的目的IP地址 ○ %1-9:Header值中正则表达式取出的变量值,最多支持9个 ○ %{x509v}:证书的版本 ○ %{x509snum}:证书的序列号 ○ %{x509sigalgo}:证书的签名算法 ○ %{x509issuer}:证书的签发者 ○ %{x509before}:证书的有效时间(在此时间之前无效) ○ %{x509after}:证书的有效时间(在此时间之后无效) ○ %{x509sub}:证书的主题 ○ %{x509spktype}:证书的主题的公钥类型 ○ %{x509spk}:证书的主题的公钥 ○ %{x509spkRSA}:证书的主题的RSA公钥的长度(仅当公钥为RSA类型才有该字段) ○ %{x509hash}:客户端证书的MD5散列(指纹) ○ %{dncn}:颁发给 ○ %{dne}:电子邮件 ○ %{dno}:公司/机构 ○ %{dnou}:部门 ○ %{dnc}:国家 ○ %{dns}:州/省份 ○ %{dnl}:城市 · 编码方式:对改写变量的编码方式,包括: ○ 原文:即不对改写变量进行编码 ○ URI编码:只会对改写变量中的特殊字符进行编码,需要编码的特殊字符为:;、/、?、:、@、&、=、+、$、|、{、}、,、\、^、[、]、`、<、>、#、%、"、空格 ○ Base64编码:对整个改写变量进行编码 |
应答报文体重写 |
将HTTP应答报文体的指定内容改写为新的内容 · 重写前内容:要被替换的HTTP报文体的正则表达式 · 重写后内容:替换后的HTTP报文体的内容。可以使用以下特定含义的字符串: ○ %is:源IP地址或源IPv6地址 ○ %ps:源端口号 ○ %id:目的IP地址或目的IPv6地址 ○ %pd:目的端口号 ○ %%:字符% ○ %[1-9],替换成%[1-9]中对应()中的内容 |
SSL URI重定向 |
如果HTTP应答报文Location首部携带指定的URI和HTTP端口号,系统会将Location首部的URI由HTTP重写为HTTPS,并将原HTTP端口号重写为新的SSL端口号 · URI:Location首部URI的正则表达式 · HTTP端口:原HTTP端口号 · SSL端口:重写后的SSL端口号 · 大小写:匹配正则表达式时,是否区分大小写 |
3. 单击<确定>按钮,新建的改写策略会在“改写策略”页面显示。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!