ADC

配置响应程序操作

启用响应程序功能后,必须配置一个或多个用于处理请求的操作。响应程序支持以下类型的操作:

  • 用回应。发送 Target 表达式定义的响应,而不将请求转发到 Web 服务器。(NetScaler 设备替代 Web 服务器并充当 Web 服务器。)使用这种类型的操作可以手动定义基于 HTML 的简单响应。通常情况下,“响应方式”操作的文本由 Web 服务器错误代码和简短的 HTML 页面组成。

  • 用 SQL OK 做出响应。发送由 Target 表达式定义的指定 SQL OK 响应。使用此类操作可以向 SQL 查询发送 SQL OK 响应。

  • 使用 SQL 错误进行响应。发送由 Target 表达式定义的指定 SQL 错误响应。使用此类操作可向 SQL 查询发送 SQL 错误响应。

  • 使用 HTML 页面进行响应。发送指定的 HTML 页面作为响应。您可以从以前上载的 HTML 页面的下拉列表中进行选择,也可以上载新的 HTML 页面。使用此类操作可以发送导入的 HTML 页面作为响应。设备在 responsewithhtmlpage 响应程序操作中使用自定义标头进行响应。您最多可以配置八个自定义标头。导入的 HTML 页面存储在 /var/download/responder 目录中。

  • 重定向。将请求重定向到其他网页或 Web 服务器。重定向操作可以将最初发送到 DNS 中存在但没有实际 Web 服务器的“虚拟”网站的请求重定向到实际的网站。它还可以将搜索请求重定向到适当的 URL。通常,重定向操作的重定向目标包含完整的 URL。

使用 CLI 配置响应程序操作:

显示指定响应程序操作的当前设置。如果未提供任何操作名称,则显示 NetScaler 设备上当前配置的所有响应程序操作的列表,其中包含缩写设置。

在命令提示符下,键入以下命令以配置响应程序操作并验证配置:

  • add responder action <name> <type> <target>
  • show responder action

参数:

  • 名称。响应程序操作的名称。 最大长度:127

  • 类型。响应程序操作的类型。它可以是:(respondwith)。

  • 目标。一个指定要用什么来回应的表达式。

  • htmlpage。 指定使用 html 页面进行响应的选项。

  • 命中。执行操作的次数。

  • referenceCount。对操作的引用次数。

  • undefHits。该操作导致 UNDEF 的次数。

  • 评论。有关此响应程序操作的任何类型的信息。

  • 内置的。用于确定响应方操作是否内置的标志。

示例:


Create a responder action that displays a “Not Found” error page for URLs that do not exist:

> add responder action act404Error respondWith '"HTTP/1.1 404 Not Found\r\n\r\n"+ HTTP.REQ.URL.HTTP_URL_SAFE + " does not exist on the web server."'
Done

> show responder action

1) Name: act404Error
Operation: respondwith
Target: "HTTP/1.1 404 Not Found" + HTTP.REQ.URL.HTTP_URL_SAFE + " does not exist on the web server."
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

Create a responder action that displays a “Not Found” error page for URLs that do not exist:

add responder action act404Error respondWith '"HTTP/1.1 404 Not Found\r\n\r\n"+ HTTP.REQ.URL.HTTP_URL_SAFE + " does not exist on the web server."'
Done
> show responder action

1) Name: act404Error
Operation: respondwith
Target: "HTTP/1.1 404 Not Found" + HTTP.REQ.URL.HTTP_URL_SAFE + " does not exist on the web server."
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

使用 CLI 修改现有的响应程序操作:

在命令提示符下,键入以下命令以修改现有的响应程序操作并验证配置:

  • set responder action <name> -target <string>
  • show responder action

示例:


set responder action act404Error  -target '"HTTP/1.1 404 Not Found\r\n\r\n"+ HTTP.REQ.URL.HTTP_URL_SAFE + " does not exist on the web server."'
 Done
> show responder action

1)      Name: act404Error
        Operation: respondwith
        Target: "HTTP/1.1 404 Not Found" + HTTP.REQ.URL.HTTP_URL_SAFE + " does not exist on the web server."
        Hits: 0
        Undef Hits: 0
        Action Reference Count: 0
 Done

<!--NeedCopy-->

使用 CLI 删除响应程序操作:

在命令提示符下,键入以下命令以删除响应程序操作并验证配置:

  • rm responder action <name>
  • show responder action

示例:

rm responder action act404Error
 Done

> show responder action
 Done

<!--NeedCopy-->

使用 CLI 在 responsewithhtmlpage 响应程序操作中添加自定义标头:

NetScaler 设备现在可以在 response withhtmlpage 响应程序操作中使用自定义标头进行响应。您最多可以配置八个自定义标头。以前,设备仅使用 Content-type:text/htmlContent-Length:<value> 静态标头进行响应。

注意:

在自定义标题配置中,您还可以覆盖“Content-Type”标头值。

在命令提示符下,键入以下命令:

add responder action <name> <type> (<target> | <htmlpage>) [-comment <string>] [-responseStatusCode <positive_integer>] [-reasonPhrase <expression>] [-headers <name(value)> ...]

其中,

名称: 响应方操作的名称。必须以字母、数字或下划线字符 (_) 开头,并且必须仅包含字母、数字和连字符 (-)、句点 (.) 哈希 (#)、空格 ()、at (@)、等于 (=)、冒号 (:) 和下划线字符。添加响应程序策略后可以更改。

类型: 响应者操作的类型。可用设置功能如下:

  1. respondwith<target> - 使用指定为目标的表达式来响应请求。
  2. respondwithhtmlpage - 使用上载的 HTML 页面对象指定为目标来回应请求。
  3. redirect - 将请求重定向到指定为目标的 URL。
  4. sqlresponse_ok-发送 SQL OK 响应。
  5. sqlresponse_error - 发送 SQL 错误响应。这是一个强制性的参数。可能的值:nooprespondwithredirectrespondwithhtmlpagesqlresponse_oksqlresponse_error

目标: 指定响应内容的表达式。通常是重定向策略的 URL 或默认语法表达式。 除了引用请求中信息的 NetScaler 默认语法表达式外,字符串生成器表达式还可以包含文本和 HTML 以及定义新行和段落的简单转义码。用双引号将每个字符串生成器表达式元素(NetScaler 默认语法表达式或字符串)括起来。使用加号 (+) 字符连接元素。

htmlpage: 对于 respondwithhtmlpage 策略,用作响应的 HTML 页面对象的名称。您必须首先导入页面对象。最大长度:31

评论: 有关此响应者操作的任何类型的信息。最大长度:255

responseStatusCode: HTTP 响应状态码,例如 200、302、404 等。 redirect action 类型的默认值为 302,对于 respondwithhtmlpage 为 200,最小值:100,最大值:599

reasonPhrase: 指定 HTTP 响应的原因短语的表达式。原因短语可以是带引号或 PI 表达式的字符串文字。例如: "Invalid URL: " + HTTP.REQ.URL Maximum Length: 8191

标头: 要插入到 HTTP 响应中的一个或多个标头。每个标头都指定为 "name(expr),",其中 expr 是一个表达式,在运行时对其进行求值以提供命名标头的值。您最多可以为响应程序操作配置八个标头。

使用 GUI 配置响应程序操作:

  1. 导航到 AppExpert > 响应程序> 操作
  2. 在详细信息窗格中,执行以下操作之一:
    • 要创建操作,请单击 添加
    • 要修改现有操作,请选择该操作,然后单击打开
  3. 单击创建确定,具体取决于您是创建操作还是修改现有操作。
  4. 单击关闭。状态栏中将显示一条消息,指出该功能已启用。
  5. 要删除响应程序操作,请选择该操作,然后单击删除。状态栏中将显示一条消息,指出该功能已被禁用。

使用“添加表达式”对话框添加表达式

  1. 创建响应程序操作配置响应程序操作 对话框中,单击 添加

  2. 在“添加表达式”对话框中,在第一个列表框中为表达式选择第一个术语。
    • HTTP。HTTP 协议。如果要检查与 HTTP 协议有关的请求的某些方面,请选择此选项。
    • SYS。一个或多个受保护的网站。如果要检查请求中与请求收件人有关的某些方面,请选择此选项。
    • 客户端。发送请求的计算机。如果要检查请求发件人的某些方面,请选择此选项。
    • 分析。与请求关联的分析数据。如果要检查请求元数据,请选择此选项。
    • SIP。一个 SIP 请求。如果要检查 SIP 请求的某些方面,请选择此选项。当您做出选择时,最右边的列表框会为表达式的下一部分列出相应的术语。
  3. 在第二个列表框中,为表达式选择第二个术语。这些选择取决于您在上一步中所做的选择,并且适合上下文。进行第二次选择后,“构造表达式”窗口下方的“帮助”窗口(该窗口为空)将显示描述刚刚选择的术语的用途和用法的帮助。
  4. 继续从上一列表框右侧显示的列表框中选择术语,或者在出现提示您输入值的文本框中键入字符串或数字,直到表达式完成。

配置全局 HTTP 操作

您可以将全局 HTTP 操作配置为在 HTTP 请求超时时调用响应程序操作。要配置此功能,必须首先创建要调用的响应程序操作。然后,配置全局 HTTP 超时操作以使用该响应程序操作响应超时。

使用 CLI 配置全局 HTTP 操作:

在命令提示符下,键入以下命令:

  • set ns httpProfile -reqTimeoutAction <responder action name>
  • save ns config

对于 <responder action name>,请替换响应程序操作的名称。

配置 HTML 页面导入

当 NetScaler 设备使用自定义消息进行响应时,我们可以使用 HTML 文件进行响应。您可以使用 import responder htmlpage 命令导入文件,然后在命 add responder action <act name> respondwithhtmlpage <file name> 令中使用此文件。您还可以通过 NetScaler GUI 导入文件。您可以将所需的 HTML 页面导入到设备文件夹中,然后在响应程序运行期间上载该页面。

使用 CLI 导入 HTML 页面

在命令提示符下,键入:

import responder htmlpage [<src>] <name> [-comment <string>] [-overwrite][-CAcertFile <string>]

示例:

import responder htmlpage http://www.example.com/page.html my-responder-page -CAcertFile my_root_ca_cert

其中, CA 证书用于验证客户端证书。必须使用 import ssl certfile CLI 命令或通过 API 或 GUI 等效命令导入证书。如果未配置证书名称,则使用默认的根 CA 证书进行证书验证。

从本地文件系统导入 HTML 页面

您也可以从本地文件系统导入 HTML 页面。要导入,请使用 SCP 或任何其他方式将文件复制到 /var/tmp/ 目录,然后使用“local:”关键字将其导入。例如:

import responder htmlpage local:my_local_file.html my_local_file

my_local_file.html 此处位于“/var/tmp/”目录中。

注意

“local:”关键字仅搜索“/var/tmp/”目录中的文件。对于非默认分区,您需要将文件复制到 /var/partitions/<partition name>/tmp 位置处存在的特定分区的 tmp 目录中。

使用 GUI 导入 HTML 页面

  1. 导航到 AppExpert > 响应程序 > HTML 页面导入
  2. 响应程序 HTML 导 入详细信息窗格中,单击 添加
  3. HTML 页面导入对象 页面中,设置以下参数:

    1. 名称。HTML 页面的名称。
    2. 从导入。从文件、文本或文本导入。
    3. URL。选择以输入 HTML 文件的 URL 位置。
    4. 文件。从设备目录中选择 HTML 文件。
    5. 文本。 选择 HTML 文件作为文本。
  4. 单击继续
  5. 验证响应者 HTML 页面详细信息。
  6. 单击 Done(完成)。

    HTML 页面导入

要编辑 HTML 页面,可以选择一个文件,然后从“选 择操作”下拉列表中单击“编辑响应程序 HTML 页面文件”。

编辑响应程序 HTML 页面文件

配置响应程序操作