Sun ONE Web Server 6.1 管理员指南 |
第 16 章
内容管理本章介绍如何配置和管理虚拟服务器类以及虚拟服务器的内容。
本章包括以下部分:
设置主文档目录主文档目录(也称为文档根目录)是您在其中存储了希望供远程客户机使用的所有文件的中心目录。
添加类时,您需要使用绝对路径来指定文档目录。如果没有在路径中使用变量,则类中每个虚拟服务器的文档根目录将默认使用相同的目录。然后,您可以在 Class Manager 中分别进行更改。
另一种方法是在设置类的路径时使用变量。例如,可以使用 $id 变量为类中每个虚拟服务器创建一个名称中带有虚拟服务器 ID 的目录。您可以将类的文档根目录设置为 class_doc_root/$id。使用此路径时,如果类的文档目录是 /sun/servers/docs/$id,则属于此类的虚拟服务器 vs1 的默认文档目录将是 /sun/servers/docs/vs1。
有关文档目录以及如何在服务器实例、类和虚拟服务器级别使用文档目录的更多信息,请参见“文档根目录”。
要更改主文档目录以便使用其他路径或变量,请执行以下步骤:
- 在 Class Manager 中,单击 "Content Management" 选项卡。
- 单击 "Primary Document Directory"。
- 在虚拟服务器旁边输入绝对目录路径或变量(或路径与变量的组合)。
如果在文档根目录绝对路径的末尾处包含了变量 $id,则默认情况下,每个虚拟服务器的默认文档根目录将是 class_doc_root/virtual_server_ID。例如,如果类的文档目录是 /sun/servers/docs/$id,则属于该类的虚拟服务器 vs1 的默认文档目录为 /sun/servers/docs/vs1。
有关变量的更多信息,请参见“使用变量”。
- 单击 "OK"。
有关更多信息,请参见联机帮助中的 "Primary Document Directory" 页面。
设置其他文档目录多数情况下,虚拟服务器或服务器实例的文档位于主文档目录中。但是,有时候您可能希望从主文档目录之外的目录提供文档。这可以通过设置其他文档目录来完成。通过从文档根目录之外的目录提供文档,您可以让其他用户管理文档组而无需赋予他们访问您的主文档根目录的权限。
如果设置其他文档目录时未使用变量,该目录将设置在类级别,并且由类中的所有虚拟服务器使用。
如果希望为类中的单个虚拟服务器设置其他文档目录,则必须使用变量,以使每个虚拟服务器的 URL 前缀映射到不同的目录。
要添加其他文档目录,请执行以下步骤:
有关更多信息,请参见联机帮助中的 "Additional Document Directories" 页面。
默认情况下,服务器实例具有若干其他文档目录。这些文档目录具有以下前缀:
您应当限制对这些目录的访问,使用户无法对其进行写入操作。下面是一个 ACL 样例:
自定义用户公共信息目录 (UNIX/Linux)有时用户会希望维护他们自己的 Web 页面。您可以配置公共信息目录,使服务器中的所有用户可以创建主页和其他文档而无需您的介入。
您只能为整个类进行这些设置,而不能基于每个虚拟服务器进行自定义设置。
通过此系统,客户机可以使用服务器将其识别为公共信息目录的 URL 来访问服务器。例如,假设您选择了前缀 ~ 和目录 public_html。如果收到一个对 http://www.sun.com/~jdoe/aboutjane.html 的请求,服务器将会认为 ~jdoe 指向一个用户的公共信息目录。服务器将在系统的用户数据库中查找 jdoe 并找到 Jane 的主目录。然后,服务器将视察 ~/jdoe/public_html/aboutjane.html。
要将服务器配置为使用公共目录,请执行以下步骤:
- 在 Class Manager 中,单击 "Content Management" 选项卡。
- 单击 "User Document Directories"。
- 选择用户 URL 前缀。
该前缀通常为 ~,因为此波浪号字符是用于访问用户主目录的标准 UNIX/Linux 前缀。
- 选择用户主目录中的子目录,服务器要在其中查找 HTML 文件。
通常,该目录为 public_html。
- 指定密码文件。
服务器需要知道可以在何处找到列出了您的系统用户的文件。服务器使用该文件来确定有效的用户名并找到其主目录。如果您将系统密码文件用于此用途,服务器将使用标准库调用来查找用户。您也可以创建另一个用户文件来查找用户。您可以指定该用户文件的绝对路径。
该文件中的每一行都应具有以下结构(以 * 号表示 /etc/passwd 文件中不需要的元素):
username:*:*:groupid:*:homedir:*
- 选择是否在启动时装入密码数据库。
有关详细信息,请参见“启动时装入整个密码文件”。
- 选择是否应用配置式样。
- 单击 "OK"。
有关更多信息,请参见联机帮助中的 "User Document Directories" 页面。
为用户提供独立的目录的另一种方法是:创建一个映射到所有用户都可以修改的中心目录的 URL。
限制内容发布
在某些情况下,系统管理员可能希望限制某些用户帐户,使其无法通过用户文档目录来发布内容。要限制某个用户的发布操作,请在 /etc/passwd 文件中该用户主目录路径的末尾添加一个斜杠:
成为:
进行此修改后,Sun ONE Web Server 将不支持来自该用户的目录的页面。请求该 URI 的浏览器会收到 "404 File Not Found" 错误,并且 Web Server 访问日志中将记录一个 404 错误。不会向错误日志中记录任何错误。
如果后来您又决定允许该用户发布内容,则可以从 /etc/passwd 条目中删除添加的斜杠,然后重新启动 Web 服务器。
启动时装入整个密码文件
您还可以选择在启动时装入完整的密码文件。如果选择此选项,服务器在启动时会将密码文件装入内存,以便用户可以更快地进行查找。但是,如果密码文件非常大,此选项会占用过多内存。
使用配置式样
您可以为服务器应用某种配置式样,以控制对公共信息目录中的目录的访问。这将禁止用户创建指向您不希望公开的信息的符号链接。有关配置文件的更多信息,请参见第 17 章“应用配置式样”。
启用远程文件操作启用远程文件操作后,客户机可以在您的服务器中进行以下操作:上载文件、删除文件、创建目录、删除目录、列出目录内容以及重命名文件。server_root/https-serve-id/config 目录中的文件 obj.conf 包含了启用远程文件操作时激活的命令。激活这些命令后,远程浏览器便可以更改服务器中的文档。您应当使用访问控制来限制对这些资源的写入操作,以防止未经授权的更改操作。
请注意,启用远程文件操作不会影响内容管理系统(如 Microsoft Frontpage)的使用。
UNIX/Linux:您必须拥有访问文件的正确权限,否则该功能将无法使用;也就是说,文档根目录的用户必须与服务器的用户相同。
要启用远程文件操作,请执行以下步骤:
有关更多信息,请参见联机帮助中的 "Remote File Manipulation" 页面。
配置文档首选项可以使用 "Document Preferences" 来设置文档首选项。本部分包括以下主题:
这些设置是为类而不是为单个虚拟服务器配置的。
设置文档首选项
要设置文档首选项,请执行以下步骤:
以下各节详细介绍了您可以设置的首选项。有关更多信息,请参见联机帮助中的 "Document Preferences" 页面。
输入索引文件名
如果没有在 URL 中指定文档的名称,服务器将自动显示索引文件。默认的索引文件是 index.html 和 home.html。如果指定了多个索引文件,服务器将按照此字段中显示的文件名的顺序进行查找,直至找到一个文件。例如,如果索引文件名为 index.html 和 home.html,则服务器将查找 index.html,如果未找到该文件则查找 home.html。
选择目录索引
一个文档目录可能有若干个子目录。例如,可能有一个名为 products 的子目录,以及另一个名为 people 的子目录等等。通常,使客户机能够访问这些目录的概述(或索引)会很有用处。
服务器通过搜索一个名为 index.html 或 home.html 的索引文件(您将该文件作为目录内容的概述进行创建和维护)来索引目录。有关更多信息,请参见上一节“输入索引文件名”。您可以通过将任何文件命名为这些默认名称中的一个,将其指定为目录的索引文件,这意味着您也可以使用 CGI 程序作为索引(如果激活了 CGI)。
如果未找到索引文件,服务器将在文档目录中生成一个列出所有文件的索引文件。
指定服务器主页
当终端用户第一次访问服务器时,他们看到的第一个文件通常称为主页。通常,此文件包含服务器的常规信息和指向其他文档的链接。
默认情况下,服务器将查找在 "Document Preferences" 的 "Index Filename" 字段中指定的索引文件并将其用作主页。不过,您也可以指定某个文件作为主页。
指定默认 MIME 类型
当文档发送到客户机时,服务器中的某一部分将识别该文档的类型,从而使客户机能够正确地显示文档。但是,服务器有时无法确定文档的正确类型,因为服务器中没有定义该文档的扩展名。在这种情况下,将发送默认值。
默认值通常为 text/plain,但是您应当将其设置为服务器中存储的最常见的文件类型。下面列出了一些常用的 MIME 类型:
配置 URL 转发URL 转发使您可以将文档请求重定向到另一个服务器。转发 URL 或重定向是一种服务器用来通知用户 URL 已经发生更改(例如,URL 由于文件已移动到其他目录或其他服务器而发生更改)的方法。您还可以使用重定向将对某服务器中的某文档的用户请求无缝发送到另一个服务器中的文档。
例如,如果将 http://www.sun.com/info/movies 转发至前缀 film.sun.com,则 URL http://www.sun.com/info/movies 将重定向至 http://film.sun.com/info/movies。
您可以使用变量将目录映射到新目录。例如,可以将 /new 映射到 /$docroot/new。这将映射到虚拟服务器的文档根目录。
有关变量的更多信息,请参见“使用变量”。
有时,您可能希望将对一个子目录中所有文档的请求重定向到特定的 URL。例如,如果必须删除某个目录(因为该目录产生的通信量过大,或者由于某种原因不再为该目录中的文档提供服务),则可以将对其中任何文档的请求定向到一个解释了该文档为何不再可用的页面。例如,可以将 /info/movies 中的前缀重定向到 http://www.sun.com/explain.html。
要配置 URL 转发,请执行以下步骤:
有关更多信息,请参见联机帮助中的 "URL Forwarding" 页面。
自定义错误响应您可以指定当客户机遇到错误时由虚拟服务器向客户机发送详细消息的自定义错误响应。可以指定要发送的文件或要运行的 CGI 程序。
例如,您可以更改服务器收到特定目录的错误时的响应方式。如果客户机尝试连接受访问控制保护的服务器内容,您可以返回一个其中包括如何获得说明信息的错误文件。
在启用自定义错误响应之前,必须创建为响应错误而发送的 HTML 文件或运行的 CGI 程序。创建后,在 Class Manager 中启用该响应。
要启用自定义错误响应,请执行以下步骤:
有关更多信息,请参见联机帮助中的 "Error Response" 页面。
更改字符集文档的字符集一部分取决于编写文档所用的语言。您可以通过选择资源并输入该资源的字符集来覆盖用于文档、文档集或目录的客户机的默认字符集设置。
Netscape Navigator 可以在 HTTP 中使用 MIME 类型的 charset 参数来更改其字符集。如果服务器的响应中包含此参数,Netscape Navigator 将相应地更改其字符集。请参见以下示例:
RFC 1700 中指定了 Netscape Navigator 识别的以下 charset 名称(以 x- 开头的名称除外):
此外,以下是得到认可的 us-ascii 的别名:
以下是得到认可的 iso_8859-1 的别名:
要更改字符集,请执行以下步骤:
有关更多信息,请参见联机帮助中的 "International Characters" 页面。
设置文档页脚您可以为服务器某一部分中的所有文档指定文档页脚,其中可以包含上次修改时间。除 CGI 脚本的输出信息或经分析的 HTML (.shtml) 文件外的所有文件都可以使用页脚。如果需要在 CGI 脚本的输出信息或经分析的 HTML 文件中显示文档页脚,请将页脚文本输入到单独的文件中并添加一行代码或另一个服务器端语句,以便将此文件附加到页面的输出信息中。
要设置文档页角,请执行以下步骤:
- 在 Class Manager 中,单击 "Content Management" 选项卡。
- 单击 "Document Footer"。
- 从 Resource Picker 中选择 "Entire Server" 将所做的更改应用到整个类,或者浏览到特定虚拟服务器的文档根目录,或者浏览到特定虚拟服务器中的特定目录。
如果选择了一个目录,则文档页脚仅在服务器收到该目录或该目录中任何文件的 URL 时才会应用。
- 指定希望包含页脚的文件类型。
- 指定日期格式。
- 输入希望显示在页脚中的文本。
文档页脚的字符数最多为 765 个。如果希望在页脚中包含文档的上次修改日期,请键入字符串 :LASTMOD:。
- 单击 "OK"。
有关更多信息,请参见联机帮助中的 "Document Footer" 页面。
使用 htaccess有关使用 htaccess 的信息,请参见“使用 .htaccess 文件”。
限制符号链接 (UNIX/Linux)您可以在服务器中限制文件系统链接的使用。文件系统链接是对存储在其他目录和文件系统中的文件的引用。使用引用,用户可以象访问当前目录中的文件一样访问远程文件。文件系统链接有两种类型:
有关硬链接和符号链接的更多信息,请参见 UNIX/Linux 系统文档。
使用文件系统链接可以方便地创建指向位于主文档目录之外的文档的指针,并且任何人都可以创建这些链接。因此,您可能会担心有人会创建指向敏感文件(例如,机密文件或系统密码文件)的指针。
要限制符号链接,请执行以下步骤:
有关更多信息,请参见联机帮助中的 "Symbolic Link" 页面。
设置服务器分析的 HTML通常情况下,HTML 发送到客户机时就像它存储在磁盘上一样,无需服务器进行任何干预。但是,服务器可以在发送文档之前搜索 HTML 文件以查找特定的命令(也就是说,服务器可以分析 HTML)。如果希望服务器分析这些文件并在文档中插入特定于请求的信息或文件,必须首先启用 HTML 分析。
要分析 HTML,请执行以下步骤:
- 在 Class Manager 中,单击 "Content Management" 选项卡。
- 单击 "Parse HTML"。
- 选择服务器要为其分析 HTML 的资源。
从 Resource Picker 中选择 "Entire Server" 将所做的更改应用到整个类,或者浏览到特定虚拟服务器的文档根目录,或者浏览到特定虚拟服务器中的特定目录。
如果选择一个目录,则服务器仅在收到该目录和该目录中任何文件的 URL 时才分析 HTML。
- 选择是否激活服务器分析的 HTML。
您可以为 HTML 文件而不为 exec 标记进行激活,也可以为 HTML 文件和 exec 标记同时进行激活,后一种方式允许 HTML 文件在服务器中执行其他程序。
- 选择要分析的文件。
您可以选择是只分析扩展名为 .shtml 的文件还是分析所有 HTML 文件(分析所有 HTML 文件会降低性能)。如果使用的是 UNIX/Linux,还可以选择分析开启了执行权限的 UNIX/Linux 文件,但是这样做不可靠。
- 单击 "OK"。
有关设置服务器以接受经分析的 HTML 的更多信息,请参见联机帮助中的 "Parse HTML" 页面。
有关使用服务器分析的 HTML 的详细信息,请参见《Sun ONE Web Server 6.1 Programmer's Guide》。
设置高速缓存控制指令Sun ONE Web Server 通过高速缓存控制指令控制代理服务器高速缓存的信息。使用高速缓存控制指令,可以覆盖代理的默认高速缓存,以防止以后对敏感信息进行高速缓存,或对其进行检索。代理服务器必须遵循 HTTP 1.1 协议,才能使这些指令正常运行。
有关 HTTP 1.1 的更多信息,请参见超文本传输协议 -- HTTP/1.1 规范 (RFC 2068),该规范位于以下位置:
http://www.ietf.org/
要设置高速缓存控制指令,请执行以下步骤:
有关更多信息,请参见联机帮助中的 "Cache Control Directives" 页面。
使用更强大的加密算法有关设置更强大的加密算法的信息,请参见“设置更强大的加密算法”。
配置服务器的内容压缩Sun ONE Web Server 6.1 支持 HTTP 内容压缩。内容压缩可以提高向客户机提供内容的速度,同时可以提供更多内容,而无需增加硬件的消耗。内容压缩减少了内容的下载时间,对使用拨号连接和高流量连接的用户尤其有用。
通过内容压缩,Web 服务器可以发送压缩的数据并同时指示浏览器如何解压缩数据,这减少了发送数据的数量并提高了页面的显示速度。
可以通过两种方式配置服务器以便处理压缩数据:
有关增强服务器压缩处理能力的信息,请参见“obj.conf 中与压缩相关的更改”。
配置服务器以提供预压缩的内容
您可以配置 Sun ONE Web Server 以便在指定的目录中生成和存储文件的预压缩版本。进行这种配置后(且仅当收到 Accept-encoding:gzip 标头时),对配置为提供预压缩内容的目录中的文件的所有请求将重定向为对该目录中的等效压缩文件(如果存在)的请求。例如,Web 服务器收到对 myfile.html 的请求,且 myfile.html 和 myfile.html.gz 都存在,则那些带有相应 Accept-encoding 标头的请求将接收压缩的文件。
要将服务器配置为提供预压缩内容,请执行以下步骤:
- 在 Class Manager 中,单击 "Content Management" 选项卡。
- 单击 "Serve Precompressed Content"。
- 输入以下信息:
- Editing。从下拉列表中选择要提供预压缩内容的资源。如果选择一个目录,则服务器仅在收到该目录和该目录中任何文件的 URL 时才提供预压缩内容。
单击 "Browse" 按钮浏览主文档目录,或单击 "Wildcard" 按钮指定通配符模式。有关使用通配符模式的信息,请参见“Resource Picker 中使用的通配符”。
- Activate Serving Precompressed Content?允许您指示服务器为选定资源提供预压缩内容。
- Check Age。指定是否检查压缩版本是否早于非压缩版本。可能的值为 "yes" 和 "no"
如果设置为 "yes",则当压缩版本早于非压缩版本时将不会选择压缩版本。
如果设置为 "no",将始终选择压缩版本,即使压缩版本早于非压缩版本。
默认情况下,该值设置为 "yes"。
- Vary Header。指定是否使用 Vary:Accept-encoding 标头。选择 "yes" 或 "no"。
如果设置为 "yes",当选择文件的压缩版本时将始终插入 Vary:Accept-encoding 标头。
如果设置为 "no",当选择文件的压缩版本时将不会插入 Vary:Accept-encoding 标头。
默认情况下,该值设置为 "yes"。
- 单击 "OK"。
将服务器配置为根据需要压缩内容
您也可以配置 Sun ONE Web Server 6.1 以便在使用过程中压缩传输数据。自动生成的 HTML 页面仅在用户提出请求时才会存在。这对基于电子商务的 Web 应用程序和数据库驱动的站点尤其有用。
要将服务器配置为根据需要压缩内容,请执行以下步骤:
- 在 Class Manager 中,单击 "Content Management" 选项卡。
- 单击 "Compress Content on Demand"。
- 输入以下信息:
- Editing。从下拉列表中选择要根据需要动态提供压缩内容的资源。如果选择一个目录,则服务器仅在收到该目录和该目录中任何文件的 URL 时才提供压缩内容。
单击 "Browse" 按钮浏览主文档目录,或单击 "Wildcard" 按钮指定通配符模式。有关使用通配符模式的信息,请参见“Resource Picker 中使用的通配符”。
- 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,这将获得适中的速度和压缩效果。
- 单击 "OK"。
obj.conf 中与压缩相关的更改
当服务器中启用了压缩后,将向 obj.conf 文件添加一个条目。下面显示了一个样例条目:
Output fn="insert-filter" filter="http-compression" type="text/*"
要将压缩仅限制为某个特定文档类型,或排除那些不能很好地处理压缩内容的浏览器,您可能需要编辑 obj.conf 文件。有关如何实现此目的的详细信息,请参见《Sun ONE Web Server 6.1 NSAPI Programmer's Guide》。