Citrix ADC

用于重写的高级策略策略的教程示例

使用重写特性,您可以修改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

  1. 导航到AppExpert>重写>行动
  2. 在详细信息窗格中,单击添加
  3. 创建重写动作对话框中,输入名称act_external_to_internal。
  4. 如果要将HTTP服务器主机名替换为内部服务器名称,请选择取代从“类型”列表框中。
  5. 在报头名称字段中,键入宿主
  6. 在替换文本字段的字符串表达式中,键入Web服务器的内部主机名。
  7. 点击创建然后点击关闭
  8. 2 .在导航栏中,单击政策
  9. 在详细信息窗格中,单击添加
  10. 在Name字段中,键入pol_external_to_internal。此策略检测到Web服务器的连接。
  11. 行动下拉菜单,选择动作act_external_to_internal。
  12. 在表达式编辑器中,构造以下表达式:
HTTP.REQ.HOSTNAME.SERVER.EQ(“www.example.com”)< !——NeedCopy >
  1. 全局绑定新策略。

重定向查询

此示例描述如何创建重写操作和重写策略,将查询重定向到适当的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头

  1. 要创建一个名为act_mask-server的重写操作,用一个没有信息的字符串替换Server头的内容,输入:

添加重写操作"act_mask-server"替换"http.RES.HEADER(\"Server\")""Web Server 1.0\"

  1. 要创建一个名为pol_mask-server的重写策略来检测所有连接,输入:

添加重写策略"pol_mask-server" true "act_mask-server"

  1. 全局绑定您的新策略以使其生效。

如何将纯文本转换为URL编码字符串和相反的方式

以下表达式将纯文本转换为URL编码的字符串,反之亦然:

  1. URL_RESERVED_CHARS_SAFE (URL编码的字符串)。

例子:

(“abc def&123”)。URL_RESERVED_CHARS_SAFE输出将是“abc%20def%26123”,这是url编码的。<!——NeedCopy >
  1. 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” 
用于重写的高级策略策略的教程示例