Sun Java System Web Proxy Server 4.0.8 管理指南

第 13 章 通过代理服务器过滤内容

本章介绍如何过滤 URL,以使代理服务器禁止访问 URL 或修改它返回到客户机的 HTML 和 JavaScript 内容。此外,本章还介绍如何基于客户机使用的 Web 浏览器(用户代理)通过代理服务器限制访问。

您可以使用 URL 过滤器文件来确定服务器支持哪些 URL。例如,可以创建或购买一个包含要限制的 URL 的文本文件,而不是手动键入要支持的 URL 的通配符模式。通过此功能,可以创建一个包含 URL 的文件,该文件可用在许多不同的代理服务器上。

您还可以基于 URL 的 MIME 类型对 URL 进行过滤。例如,您可能允许代理服务器高速缓存和发送 HTML 和 GIF 文件,但不允许它获取二进制文件或可执行文件(因为这些文件可能带来计算机病毒)。

本章包含以下各节:

过滤 URL

您可以使用包含 URL 的文件来配置代理服务器检索哪些内容。可以设置一个代理服务器始终支持的 URL 列表以及一个代理服务器从不支持的 URL 列表。

例如,如果您是 Internet 服务提供商,希望所运行的代理服务器提供适合儿童的内容,则可以设置一个准许儿童查看的 URL 列表。然后,可以使代理服务器仅检索批准的 URL。如果客户机尝试访问不支持的 URL,则可以让代理服务器返回默认的 "Forbidden" 消息,也可以创建一条解释客户机为何无法访问此 URL 的自定义消息。

要基于 URL 限制访问,请创建一个包含允许或限制的 URL 的文件。可以通过 Server Manager 实现此操作。创建此文件后,可以设置限制。这些过程将在以下各节中进行介绍。

创建包含 URL 的过滤器文件

过滤器文件是包含 URL 列表的文件。代理服务器使用的过滤器文件为纯文本文件,其中的 URL 行采用以下模式:

protocol://host:port/path/filename

可以分别在以下三部分中使用正则表达式:protocol host:portpath/filename。例如,如果要针对所有协议创建链接到 netscape.com 域的 URL 模式,应在文件中包含以下行:

.*://.*\\.example\\.com/.*

仅当未指定端口号时此行才起作用。有关正则表达式的更多信息,请参第 16 章中的“了解正则表达式”。

如果您要创建自己的文件,但不使用 Server Manager,请使用 Server Manager 页面创建一个空文件,然后在此文件中添加自己的文本或使用包含正则表达式的文件替换此文件。

Procedure创建过滤器文件

  1. 访问 Server Manager 并单击 "Filters" 选项卡。

  2. 单击 "Restrict URL Filter Access" 链接。

    将显示 "Restrict URL Filter Access" 页面。

  3. 从 "Create/Edit" 按钮旁边的下拉式列表中选择 "New Filter"。

  4. 在下拉式列表右侧的文本框中键入过滤器文件的名称,然后单击 "Create/Edit" 按钮。

    将显示 "Filter Editor" 页面。

  5. 使用 "Filter Content" 滚动文本框键入 URL 以及 URL 的正则表达式。

    使用 "Reset" 按钮可清除此字段中的所有文本。

    有关正则表达式的更多信息,请参见第 16 章中的“了解正则表达式”。

  6. 单击 "OK"。

    代理服务器将创建文件并返回到 "Restrict URL Filter Access" 页面。将在 proxy-serverid/conf_bk 目录中创建过滤器文件。

为过滤器文件设置默认访问

创建包含要使用的 URL 的过滤器文件后,可以为这些 URL 设置默认访问。

Procedure为过滤器文件设置默认访问

  1. 访问 Server Manager 并单击 "Filters" 选项卡。

  2. 单击 "Restrict URL Filter Access" 链接。

    将显示 "Restrict URL Filter Access" 页面。

  3. 选择要用于过滤器的模板。

    通常,需要为整个代理服务器创建过滤器文件,但是您可能希望为 HTTP 创建一组过滤器文件,而为 FTP 创建另一组过滤器文件。

  4. 使用 "URL Filter To Allow" 列表来选择一个包含您希望代理服务器支持的 URL 的过滤器文件。

  5. 使用 "URL Filter To Deny" 列表来选择一个包含您希望代理服务器拒绝对其访问的 URL 的过滤器文件。

  6. 选择您希望代理服务器向请求了拒绝的 URL 的客户机返回的文本。

    • 发送代理服务器生成的默认 "Forbidden" 响应。

      • 发送包含自定义文本的文本文件或 HTML 文件。在文本框中键入此文件的绝对路径。

  7. 单击 "OK"。

  8. 单击 "Restart required"。将会显示 "Apply Changes" 页面。

  9. 单击 "Restart Proxy Server" 按钮以应用更改。

内容 URL 重写

Proxy Server 可以检查要返回到客户机的内容,并使用其他字符串替换 URL 之类的模式。可以配置两个参数:来源字符串和目标字符串。Proxy Server 将查找与来源字符串匹配的文本并将其替换为目标字符串中的文本。此功能仅在反向代理模式下有效。

Procedure创建 URL 重写模式

  1. 访问 Server Manager 并单击 "Filters" 选项卡。

  2. 单击 "Set Content URL Rewriting" 链接。

    将显示 "Set Content URL Rewriting" 页面。

  3. 从下拉式列表中选择资源或指定正则表达式。

    有关正则表达式的更多信息,请参见第 16 章中的“了解正则表达式”。

  4. 在 "Source Pattern" 文本框中指定来源字符串。

  5. 在 "Destination Pattern" 文本框中指定目标字符串。

  6. 在 "MIME Pattern" 文本框中指定内容类型。

  7. 单击 "OK"。

  8. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  9. 单击 "Restart Proxy Server" 按钮以应用更改。

Procedure编辑 URL 重写模式

  1. 访问 Server Manager 并单击 "Filters" 选项卡。

  2. 单击 "Set Content URL Rewriting" 链接。

    将显示 "Set Content URL Rewriting" 页面。

  3. 单击要编辑的 URL 重写模式旁边的 "Edit" 链接。

  4. 单击 "OK"。

  5. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  6. 单击 "Restart Proxy Server" 按钮以应用更改。

Procedure删除 URL 重写模式

  1. 访问 Server Manager 并单击 "Filters" 选项卡。

  2. 单击 "Set Content URL Rewriting" 链接。

    将显示 "Set Content URL Rewriting" 页面。

  3. 单击要删除的 URL 重写模式旁边的 "Remove" 链接。

    单击 "OK" 确认删除。

  4. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  5. 单击 "Restart Proxy Server" 按钮以应用更改。

针对特定 Web 浏览器限制访问

可以基于客户机 Web 浏览器的类型和版本来限制对代理服务器的访问。将基于所有 Web 浏览器在发出请求时发送到服务器的用户代理标头进行限制。

Procedure基于客户机的 Web 浏览器限制对代理服务器的访问

  1. 访问 Server Manager 并单击 "Filters" 选项卡。

  2. 单击 "Set User-Agent Restriction" 链接。

    将显示 "Set User-Agent Restriction" 页面。

  3. 从下拉式列表中选择资源,或键入与您希望 Proxy Server 支持的浏览器的用户代理字符串匹配的正则表达式。

    如果要指定多个客户机,请将正则表达式括在圆括号中并使用 | 字符隔开多个条目。有关正则表达式的更多信息,请参见第 16 章中的“了解正则表达式”。

  4. 选中 "Allow Only User-Agents Matching" 选项。

  5. 单击 "OK"。

  6. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  7. 单击 "Restart Proxy Server" 按钮以应用更改。

阻止请求

您可能需要基于上载内容类型来阻止文件上载和其他请求。

Procedure基于 MIME 类型阻止请求

  1. 访问 Server Manager 并单击 "Filters" 选项卡。

  2. 单击 "Set Request Blocking" 链接。

    将显示 "Set Request Blocking" 页面。

  3. 从下拉式列表中选择资源,或单击 "Regular Expression" 按钮,键入正则表达式,然后单击 "OK"。

  4. 选择所需的请求阻止类型。

    • Disabled-禁用请求阻止

    • Multipart MIME (File Upload)-阻止所有文件上载

    • MIME Types Matching Regular Expression-阻止对与键入的正则表达式匹配的 MIME 类型的请求。有关正则表达式的更多信息,请参第 16 章中的“了解正则表达式”。

  5. 选择要阻止所有客户机的请求,还是阻止与输入的正则表达式匹配的用户代理的请求。

  6. 选择针对哪些方法阻止请求。

    选项包括:

    • Any Method With Request Body-阻止包含请求主体的所有请求(无论请求使用的是何种方法)

    • 仅适用于:

      • POST-阻止使用 POST 方法的文件上载请求

      • PUT-阻止使用 PUT 方法的文件上载请求

    • Methods Matching Regular Expression-阻止所有使用所输入方法的文件上载请求

  7. 单击 "OK"。

  8. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  9. 单击 "Restart Proxy Server" 按钮以应用更改。

抑制外出的标头

通常,为了安全起见,可以将代理服务器配置为从请求中删除外出的标头。例如,您可能要阻止 From 标头传出,因为它会泄露用户的电子邮件地址。或者,您可能要过滤掉用户代理标头,这样外部服务器便无法确定您的组织使用的是何种 Web 浏览器。此外,在将请求转发到 Internet 之前,还可能要删除仅在内联网中使用的与日志记录或客户机相关的标头。

此功能不会影响代理服务器本身专门处理或生成的标头,也不会影响协议正常工作所需的标头,例如 If-Modified-Since 和 Forwarded。

代理服务器产生的转发标头不会构成安全问题。远程服务器可以通过连接来检测连接的代理主机。在代理链中,外部代理可抑制来自内部代理的转发标头。如果您不希望向远程服务器泄露内部代理或客户机主机名,建议使用此方法来设置您的服务器。

Procedure抑制外出的标头

  1. 访问 Server Manager 并单击 "Filters" 选项卡。

  2. 单击 "Suppress Outgoing Headers" 链接。

    将显示 "Suppress Outgoing Headers" 页面。

  3. 在 "Suppress Headers" 文本框中键入以逗号分隔的要抑制的请求标头列表。

  4. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  5. 单击 "Restart Proxy Server" 按钮以应用更改。

按 MIME 类型过滤

您可以将代理服务器配置为阻止与某个 MIME 类型匹配的特定文件。例如,可以将代理服务器设置为阻止任何可执行文件或二进制文件,这样使用代理服务器的所有客户机便无法下载可能的计算机病毒。

如果您希望代理服务器支持新的 MIME 类型,请在 Server Manager 中选择 "Preferences" > "Create/Edit MIME Types",然后添加类型。有关创建 MIME 类型的更多信息,请参见创建 MIME 类型

可将过滤 MIME 类型与模板进行组合,从而仅针对特定的 URL 阻止特定的 MIME 类型。例如,可以阻止来自 .edu 域中任何计算机的可执行文件。

Procedure按 MIME 类型过滤

  1. 访问 Server Manager 并单击 "Filters" 选项卡。

  2. 单击 "Set MIME Filters" 链接。

    将显示 "Set MIME Filters" 页面。

  3. 选择要用于过滤 MIME 类型的模板,或确保编辑整个服务器。

  4. 在 "Current filter" 文本框中,可以键入与要阻止的 MIME 类型匹配的正则表达式。

    例如,要过滤掉所有应用程序,可键入正则表达式 application/.*。此方法要快于检查每个应用程序类型的 MIME 类型。正则表达式不区分大小写。有关正则表达式的更多信息,请参见第 16 章中的“了解正则表达式”。

  5. 检查要过滤的 MIME 类型。

    当客户机尝试访问被阻止的文件时,代理服务器将返回 "403 Forbidden" 消息。

  6. 单击 "OK"。

  7. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  8. 单击 "Restart Proxy Server" 按钮以应用更改。

按 HTML 标记过滤

可以指定在将文件传递给客户机之前所要过滤掉的 HTML 标记。通过此方法,可以过滤掉 HTML 文件中嵌入的对象(如 Java applet 和 JavaScript)。要过滤 HTML 标记,应指定 HTML 标记的开始标记和结束标记。然后,代理服务器会使用空格替换这些标记中的所有文本和对象,然后再将文件发送到客户机。

代理服务器会将原始(未编辑的)文件存储在高速缓存中(如果将代理服务器配置为高速缓存此资源)。

Procedure过滤掉 HTML 标记

  1. 访问 Server Manager 并单击 "Filters" 选项卡。

  2. 单击 "Set HTML Tag Filters" 链接。

    将显示 "Set HTML Tag Filters" 页面。

  3. 选择要修改的模板。

    可以选择 HTTP,也可以选择仅指定特定 URL(例如,来自 .edu 域中主机的 URL)的模板。

  4. 选择要过滤的默认 HTML 标记。

    • APPLET 通常位于 Java applet 的两侧。

    • SCRIPT 表示 JavaScript 代码的开始。

    • IMG 指定内嵌图像文件。

  5. 可以键入任何要过滤的 HTML 标记。

    键入 HTML 标记的开始标记和结束标记。

    例如,要过滤掉表单,可以在 "Start Tag" 框中键入 FORM,在 "End Tag" 框中键入 /FORM。HTML 标记不区分大小写。如果要过滤的标记没有结束标记(例如 OBJECTIMG),可以将 "End Tag" 框留空。

  6. 单击 "OK"。

  7. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  8. 单击 "Restart Proxy Server" 按钮以应用更改。

配置服务器的内容压缩

Proxy Server 支持 HTTP 内容压缩。通过内容压缩可以提高向客户机传送的速度,而且无需增加硬件开支即可提高内容量。压缩内容减少了内容的下载时间,对使用拨号连接和高流量连接的用户尤其有用。

通过内容压缩,Proxy Server 可以发送压缩数据,并指示浏览器对这些数据进行动态解压缩。这种压缩减少了发送的数据量,同时提高了页面的显示速度。

将服务器配置为根据需要压缩内容

您可以将 Proxy Server 配置为动态压缩传输数据。动态生成的 HTML 页面仅在用户提出请求时才存在。

Procedure将服务器配置为根据需要压缩内容

  1. 访问 Server Manager 并单击 "Filters" 选项卡。

  2. 单击 "Compress Content on Demand" 链接。

    将显示 "Compress Content on Demand" 页面。

  3. 从下拉式列表中选择资源或键入正则表达式。

    有关正则表达式的更多信息,请参见第 16 章中的“了解正则表达式”。

  4. 指定以下信息:

    • Activate Compress Content on Demand?选择服务器是否要为选定资源提供预压缩内容。

    • Vary Header。指定是否要插入 Vary: Accept-encoding 标头。选择 "yes" 或 "no"。如果设置为 "yes",当选择文件的压缩版本时将始终插入 Vary: Accept-encoding 标头。

      如果设置为 "no",当选择文件的压缩版本时将不会插入 Vary: Accept-encoding 标头。

      默认情况下,该值设置为 "yes"。

    • Fragment Size。指定压缩库 (zlib) 使用的内存段大小(以字节为单位)以控制一次压缩的量。默认值是 8096。

    • Compression Level。指定压缩的级别。请选择 1 至 9 之间的值。值为 1 时速度最快;值为 9 时压缩效果最好。默认值为 6,是速度和压缩的折中。

  5. 单击 "OK"。

  6. 单击 "Restart required"。

    将会显示 "Apply Changes" 页面。

  7. 单击 "Restart Proxy Server" 按钮以应用更改。