Citrix ADC

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

使用重写功能,您可以修改HTTP标头的任何部分,对于响应,您可以修改HTTP正文。您可以使用此功能完成几项有用的任务,例如删除不必要的HTTP标头,屏蔽内部URL,重定向网页以及重定向查询或关键字。

在以下示例中,您首先创建重写操作和重写策略。然后你在全局绑定策略。

本文档包括以下详细信息:

  • 将外部url重定向到内部url
  • 重定向查询
  • 将HTTP重写为HTTPS
  • 删除不需要的标头
  • 减少Web服务器重定向
  • 屏蔽服务器标头
  • 将纯文本转换为url编码的字符串,相反的方法

有关命令和语法描述的详细信息,请参阅重写命令参考页面。

将外部url重定向到内部url

此示例介绍如何创建重写操作和重写策略,以将外部url重定向到内部url。您可以创建一个名为act_external_to_internal的动作来执行重写操作。然后,您创建一个名为"外部"的策略。

使用cli将外部url重定向到内部url

  • 要创建重写操作,请在命令提示符处键入:

添加重写action act_external_to_internal REPLACE " http.req.hostname. net "服务器\“host_name_of_internal_Web_server \””

  • 要创建重写策略,请在Citrix ADC命令提示符处键入:

添加重写策略pol_external_to_internal "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. 在替换文本字段的字符串表达式中,键入网站服务器的内部主机名。
  7. 单击创建(创建),然后单击关闭(关闭)。
  8. 在导航窗格中,单击策略
  9. 在详细信息窗格中,单击添加(添加)。
  10. 在"名称"字段中,键入pol_external_to_internal。此策略检测到Web服务器的连接。
  11. 在“操作下拉菜单中,选择内部操作行为。
  12. 在表达式编辑器中,构造以下表达式:
HTTP.REQ.HOSTNAME.SERVER.EQ(“www.example.com”)< !——NeedCopy >
  1. 在全球范围内绑定您的新策略。

重定向查询

此示例介绍如何创建重写操作和重写策略,以将查询重定向到正确的网址。该示例假定该请求包含一个设置为www.example.com的主机标头和一个带有字符串/query.cgi?的get方法服务器=5。重定向会从主机标头中提取域名,从查询字符串中提取数字,然后将用户的查询重定向到服务器Web5.example.com,用户的其余查询将在那里处理。

注意:

尽管以下命令出现在多行上,但您必须在不使用换行符的单行中输入它们。

使用cli将查询重定向到适当的url

  • 要创建名为act_rerect_query的重写操作,该操作将HTTP服务器主机名替换为内部服务器名称,请键入:

替换http.req.header(“主机”).before_str(“。example.com”)“Web”+ http.req.url.query.value(“服务器”)”

  • 要创建名为pol_rerect_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_WIT_https的重写操作,用字符串“https”替换字符串“HTTP”的所有实例,请输入以下命令:

添加重写动作act_replace_http_with_https replace_all ' HTTP .res.body(100)' '"https"' -search HTTP

  • 要创建名为pol_replace_http_with_https的重写策略以检测到Web服务器的连接,请输入以下命令:

添加重写策略pol_replace_http_with_https TRUE act_replace_http_with_https NOREWRITE

  • 在全球范围内绑定您的新策略。

要对此重写操作进行故障排除,请参阅”案例研究:将HTTP链接转换为HTTPS不起作用的重写策略”。”

删除不需要的标头

此示例说明如何使用重写策略删除不需要的标头。具体来说,该示例显示了如何删除以下标头:

  • 接受编码标头。从HTTP响应中删除"接受编码"标头可防止对响应进行压缩。
  • 内容位置标题。从HTTP响应中删除内容位置标头可防止服务器向黑客提供可能允许安全漏洞的信息。

要从HTTP响应中删除标头,您需要创建重写操作和重写策略,然后全局绑定策略。

使用cli创建适当的重写操作

在命令提示符下,键入以下命令之一以删除“接受编码”标头并防止响应压缩,或删除“内容位置”标头:

  • 添加重写动作“act_remove-ae”
  • 添加重写动作“act_remove-cl”

使用cli创建适当的重写策略

在命令提示符下,键入以下命令之一以删除“接受编码”标头或“内容位置”标头:

  • 添加重写策略"pol_remove-ae" true "act_remove-ae"
  • 添加重写策略"pol_remove-cl" true "act_remove-cl"

使用cli在全局绑定策略

在命令提示符下,根据需要键入以下命令之一以全局绑定您创建的策略:

  • 绑定重写全局pol_remove_ae 100
  • 绑定重写全局pol_remove_cl 200

减少Web服务器重定向

此示例说明如何使用重写策略修改与主页的连接以及与服务器默认索引页的正斜杠(/)结尾的其他URL之间的连接,从而防止重定向并减少服务器上的负载。

使用cli修改目录级别的HTTP请求以包含默认主页

  • 要创建名为“操作默认主页”的重写操作,该操作将以正斜杠结尾的URL修改为包含默认主页index . html,请键入:

添加重写动作“action-default-主页”替换http.req.url.path“\”/index.html\"

  • 要创建名为政策default-home的重写策略以检测到主页的连接并应用新操作,请键入:

添加重写策略"policy-default-首页" q\#http.req.url.path.EQ("/")“action-default-homepage \ #

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

屏蔽服务器标头

此示例说明如何使用重写策略来掩盖Web服务器HTTP响应中的服务器标头中的信息。该标题包含黑客可以用来危害您的网站的信息。虽然掩盖标题不会阻止熟练的黑客找到有关您的服务器的信息,但它会使黑客攻击Web服务器变得更加困难,并鼓励黑客选择受保护较差的目标。

在来自cli的响应中掩盖服务器标头

  1. 要创建名为act_mask-server的重写操作,该操作将服务器标头的内容替换为不提供信息的字符串,请键入:

添加重写动作"act_mask-server"替换"http.RES.HEADER(\"Server\")"Web服务器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。(网址编码为字符串)

示例:

(“abc % 20 def % 26123”).SET_TEXT_MODE (URLENCODED)。德CODE_USING_TEXT_MODE Output will be “abc def&123” 
用于重写的高级策略策略的教程示例