用于重写的高级策略策略的教程示例
使用重写特性,您可以修改HTTP头的任何部分,对于响应,您可以修改HTTP主体。您可以使用该特性来完成一些有用的任务,例如删除不必要的HTTP头,屏蔽内部url,重定向网页,重定向查询或关键字。
在以下示例中,首先创建一个重写操作和一个重写策略。然后全局绑定策略。
本文档包括以下内容:
- 将外部URL重定向到内部URL
- 重定向查询
- 将HTTP改写为HTTPS
- 删除不需要的头文件
- 减少Web服务器重定向
- 屏蔽服务器头
- 将纯文本转换为URL编码字符串和相反的方式
有关命令和语法描述的更多信息,请参见重写命令参考页面。
将外部URL重定向到内部URL
此示例描述如何创建重写操作和重写策略,将外部URL重定向到内部URL。您可以创建一个名为act_external_to_internal的操作来执行重写。然后创建一个名为pol_external_to_internal的策略。
通过CLI将外部URL重定向到内部URL
- 要创建重写操作,在命令提示符处输入:
添加重写动作act_external_to_internal替换“http.req.hostname.”服务器\“host_name_of_internal_Web_server \””
- 要创建重写策略,在Citrix ADC命令提示符下,输入:
“http.req.hostname.server.eq(\"host_name_of_external_Web_server\")”act_external_to_internal
- 全局绑定策略。
使用配置实用程序将外部URL重定向到内部URL
- 导航到AppExpert>重写>行动.
- 在详细信息窗格中,单击添加.
- 在创建重写动作对话框中,输入名称act_external_to_internal。
- 如果要将HTTP服务器主机名替换为内部服务器名称,请选择取代从“类型”列表框中。
- 在报头名称字段中,键入宿主.
- 在替换文本字段的字符串表达式中,键入Web服务器的内部主机名。
- 点击创建然后点击关闭.
- 2 .在导航栏中,单击政策.
- 在详细信息窗格中,单击添加.
- 在Name字段中,键入pol_external_to_internal。此策略检测到Web服务器的连接。
- 在行动下拉菜单,选择动作act_external_to_internal。
- 在表达式编辑器中,构造以下表达式:
HTTP.REQ.HOSTNAME.SERVER.EQ(“www.example.com”)< !——NeedCopy >
- 全局绑定新策略。
重定向查询
此示例描述如何创建重写操作和重写策略,将查询重定向到适当的URL。该示例假设请求包含一个Host头设置为www.example.com和一个GET方法字符串/ query.cgi吗?服务器= 5.重定向从主机标头和查询字符串中提取域名和编号,并将用户的查询重定向到服务器Web5.example.com,在那里处理用户查询的其余部分。
注意:
尽管下面的命令出现在多行上,但您必须在单行上输入它们,不能换行。
使用CLI将查询重定向到适当的URL
- 要创建一个名为act_redirect_query的重写操作,将HTTP服务器主机名替换为内部服务器名,输入:
替换http.req.header("Host").before_str(".example.com")'"Web" + http.req.url.query.value("server")'
- 要创建名为pol_redirect_query的重写策略,请在Citrix ADC命令提示符处键入以下命令。此策略检测到包含查询字符串的Web服务器的连接。不要对不包含查询字符串的连接应用此策略:
添加重写策略pol_redirect_query 'http.req.header("Host").eq(www.example.com) && & http.req.url.contains("?")' act_redirect_query
- 全局绑定新策略。
由于此重写策略是高度特定的,必须在任何其他重写策略之前运行,因此建议将其分配为高优先级。如果将其优先级分配为1,则首先对其进行计算。
将HTTP改写为HTTPS
本示例描述如何重写Web服务器响应,以查找所有以字符串“HTTP”开头的url,并将该字符串替换为“https”。你可以使用它来避免在服务器从HTTP转移到HTTPS后不得不更新网页。
通过CLI将HTTP的url重定向到HTTPS
- 要创建一个名为act_replace_http_with_https的重写操作,该操作将字符串“HTTP”的所有实例替换为字符串“https”,输入以下命令:
添加重写动作act_replace_http_with_https replace_all ' HTTP .res.body(100)' ' '"https"' -搜索HTTP
- 要创建一个名为pol_replace_http_with_https的重写策略,该策略检测到Web服务器的连接,输入以下命令:
添加重写策略pol_replace_http_with_https TRUE act_replace_http_with_https NOREWRITE
- 全局绑定新策略。
要排除此重写操作的故障,请参见“案例研究:重写HTTP链接转换为HTTPS不工作的策略”。
删除不需要的头文件
此示例解释如何使用Rewrite策略删除不需要的标头。具体来说,该示例演示了如何删除以下标头:
- 接受编码头。从HTTP响应中删除Accept Encoding报头可以防止对响应进行压缩。
- Content Location头。从HTTP响应中删除Content Location头可以防止服务器向黑客提供可能导致安全漏洞的信息。
要从HTTP响应中删除报头,需要创建一个重写操作和一个重写策略,并全局绑定该策略。
使用CLI创建适当的Rewrite操作
在命令提示符处,键入以下命令之一,以删除Accept Encoding报头并防止响应压缩,或删除Content Location报头:
添加重写动作"act_remove-ae"删除http_header "Accept-Encoding"
添加重写动作“act_remove-cl”删除http_header的内容-位置
使用CLI命令创建适合的重写策略
在命令提示符处,键入以下命令之一以删除Accept Encoding报头或Content Location报头:
添加重写策略"pol_remove-ae" true "act_remove-ae"
添加重写策略"pol_remove-cl" true "act_remove-cl"
使用命令行,全局绑定策略
在命令提示符下,根据需要键入以下命令之一,以全局绑定您创建的策略:
绑定重写全局pol_remove_ae 100
绑定重写全局pol_remove_cl 200
减少Web服务器重定向
本示例解释如何使用Rewrite策略修改到您的主页和其他以正斜杠(/)结尾的url到服务器默认索引页的连接,防止重定向并减少服务器上的负载。
使用实例通过CLI,修改目录级HTTP请求,使其包含默认首页
- 要创建一个名为action-default-homepage的重写操作,它修改以正斜杠结尾的url,以包含默认主页index.html,输入:
添加重写操作“action-default-首页”替换http.req.url.path“\”/index.html\”
- 要创建一个名为policy-default-homepage的重写策略,该策略检测到您的主页的连接并应用您的新操作,请输入:
q\#http.req.url.path.EQ("/")“action-default-homepage \ #
- 全局绑定您的新策略以使其生效。
屏蔽服务器头
本示例解释如何使用Rewrite策略来屏蔽来自Web服务器的HTTP响应中的Server报头中的信息。这个标题包含了黑客可以用来攻击你的网站的信息。虽然屏蔽头部不会阻止熟练的黑客找到关于您的服务器的信息,但它会使黑客攻击您的Web服务器更加困难,并鼓励黑客选择保护较差的目标。
在来自CLI的响应中屏蔽Server头
- 要创建一个名为act_mask-server的重写操作,用一个没有信息的字符串替换Server头的内容,输入:
添加重写操作"act_mask-server"替换"http.RES.HEADER(\"Server\")""Web Server 1.0\"
- 要创建一个名为pol_mask-server的重写策略来检测所有连接,输入:
添加重写策略"pol_mask-server" true "act_mask-server"
- 全局绑定您的新策略以使其生效。
如何将纯文本转换为URL编码字符串和相反的方式
以下表达式将纯文本转换为URL编码的字符串,反之亦然:
- URL_RESERVED_CHARS_SAFE (URL编码的字符串)。
例子:
(“abc def&123”)。URL_RESERVED_CHARS_SAFE输出将是“abc%20def%26123”,这是url编码的。<!——NeedCopy >
- SET_TEXT_MODE .DECODE_USING_TEXT_MODE (URLENCODED)。(URL编码为字符串)
例子:
(“abc % 20 def % 26123”).SET_TEXT_MODE (URLENCODED)。德CODE_USING_TEXT_MODE Output will be “abc def&123”