发信人: eagle()
整理人: eagle(2000-09-30 00:41:29), 站内信件
|
【 以下文字转载自 WinNT 讨论区 】 【 原文由 阿鲁 所发表 】
原始文件:manual.ps.gz
文件叙述:阿帕奇 HTTP 服务器参考手册
文件编号:LRG.LDTP.GUIDE.002
翻译日期:1996/09/01
翻译维护:[email protected]
简体中文版维护:dfbb, [email protected]
APACHE
An HTTP Server
Reference Manual
@ David Robinson and the Apache Group, 1995
http://www.apache.org/
保留所有权利。这个产品或文件受版权保护并且得在限制其用途,复制,散播以 及编辑的授权下散播。细节请参阅阿帕奇授权书。
版权所有者不对这份手册的内容作任何保证及建议而且特别声明不保证符合任何 商业目的。
版权所有者保留修订这份手册的权利且其内容得依时变更而不必通知任何人这些 修订与变更。
All rights reserved. This product or documentation protected by copyri ght and is distributed under licences restricting its use,copying,dist ribution and decompilation. See the Apache licence for details.
The copyright owner gives no warranties and makes no representations a bout the contents of this manual and specifically disclaims warranties of merchantability of fitness for any purpose.
The Copyright owner reserves the right to revise this manual and make changes from time to time in its contents without notifying any person of such revision or changes.
TRADEMARKS
Unix is a registered trademark of UNIX System Laboratories, Inc.
Sun and SunOs are trademarks of Sun Microsystems, Inc. Netscape is a t rademark of Netscape Communications Corporation. All other product nam es mentioned herein are trademarks of their respective owners.
目录(Contents) (略)
序(Preface)
这份手册是 1.0 版阿帕奇服务器(Apache HTTP server)的文件。这个服务器是阿 帕奇计划的产品,此计划试图回应某些对积极发展一套可以免费取得之 HTTP 服 务器的关心。这个计划的目标是提供一个安全的,有效率的而且可以扩充功能的 服务器,此服务器提供 HTTP 服务且符合目前的 HTTP 标准。
这套阿帕奇 httpd 服务器的设计不但与 NCSA httpd 1.3 相容,并且提供常常有 人要求的特色,像是
。作为身分验认之用的 DBM 资料库
。自定的(customised)错误与问题回应方式
。多重的 directoryindex 指令
。不限次数的 Alias 以及 Redirect 指令
。以内容为基础的(Content-based) 文件协商(negotiation)
。虚拟服务器
阿帕奇授权书
Copyright 1995 The Apache Group. All rights reserved.
假若符合下列条件,无论是否经过修改,以原始程序及执行程序的形式散播与使 用都是许可的:
1. 散播原始程序码必须保留上述的版权告示,这份条件列表以及下列声明。
2. 以执行程序码的形式散播必须在随附散播的文件以及/或是资讯中重现上述的 版权告示,这份条件列表以及下列声明。
3. 所有提及或使用这套软体特色的广告都必须显示下列讯息:
`This product includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/).'
4. `Apache Server' 以及 `Apache Group' 这些名称没有随附前述的许可不得用 来为这套软体的衍生产品背书或鼓励采用。
5. 以任何形式散播都必须保留下列讯息:
`This product includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/).'
Redistribution and use in source and binary forms, with or without mod ification, are permitted provided that the following condictions are m et:
1. Redistribution of source code must retain the above copyright notic e, this list of condictions and the following disclaimer.
2. Redistribution in binary form must reproduce the above copyright no tice, this list of condictions and the following disclaimer in the doc umentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this softwa re must display the following acknowledge: `This product includes soft ware developed by the Apache Group for use in the Apache HTTP server p roject (http://www.apache.org/).'
4. The names `Apache Server' and `Apache Group' must not be used to en dorse or prompt products derived from this software without prior writ ten permission.
5. Redistribution of any form whatsoever must retain the following ack nowledge: `This product includes software developed by the Apache Grou p for use in the Apache HTTP server project (http://www.apache.org/).'
THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY EXPRES SED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARITICULAR PURPOSE AR E DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR ITS CONTRIBUTORS B E LIABLE FOR ANY DIRECT,INDIRECT, INCIDETAL, SPECIAL, EXEMPLARY OR CON SEQUENTIAL DAMAGES (INCLUDING,BUT NOT LIMITED TO, PROCUREMENT OF SUBST ITUTE GOODS OR SERVICES;LOSS OF USE, DATA OR PROFITS; OR BUSINESS INTE RRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHERHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDIN G NEGLIGENCE OR OTHER WISE)ARISING IN ANY WAY OUT OF THE USE OF THIS S OFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individ uals on behalf of the Apache Group and was originally based on public domain software written at the National Center for Supercomputing Appl ications, University of Illinois, Urbana-Champaign. For more informati on on the apache Group and the Apache
HTTP server project, please see http://www.apache.org/.
第一章
编译以及安装阿帕奇
1.1 下载阿帕奇
最新的阿帕奇资讯可以在阿帕奇网站 http://www.apache.org/ 找到。
此处会列出目前发行的版本,任何更新的公开测试版,同时还有映射的(mirror) 网站与匿名文件传输(ftp) 站之细节。
1.2 编译阿帕奇
这一版的阿帕奇支援所谓的‘选用性模组’。然而,为了使这些模组能有效率, 此服务器必须知道哪些模组要编译进去;这需要产生一点短短的程序码(`module s.c') 单纯地列出它们。
如果你满意我们的标准模组集,而且打算继续让它保持这样,那麽你可以直接编 辑我们提供的 Makefile 并且如同你以前作过的一样编译它。
如果你想要使用选用性模组,那麽无论如何,你都得执行配置指令稿。
这样做:
1. 编辑 `Configuration' 这个文件。这里面包含每一种机器的 Makefile 设定 ,而且在这底下还有个额外的节区列出要编译进去的模组,以及包含这些模组的 文件名称,你将得:
(a) 选择适合你机器的一种编译器以及编译选项。
(b) 消掉相对於你想包含进去的模组上面的注解(文件底端列出模组的那些行) 或者加上对应你自己所撰写之自制(custom)模组的一些新行。注意,如果你想要 有DBM 验认(auth)的话必须明确地配置进去;只要消掉对应的行上面的注解即可 。
2. 执行 `Configure' 这个指令shell;
% Configure
Using `Configuration' as config file
%
这会产生新版的 Makefile 以及 modules.c 文件。如果你
想要维护多个配置,那麽你可以这样,例如
% Configure -file Configuration.ai
Using alternate config file Configuration.ai
%
3. 键入 `make'
我们放进阿帕奇发行套件里的模组是我们测试过而且有许多阿帕奇发展群成员使 用的模组。这些成员或协力团体(thirdparties)配合特殊需要或功能而贡献的一 些额外模组可以在http://www.apache.org/dist/contrib/modules/ 里找到。在 该网页上有如何连结这些模组到阿帕奇核心程序码里去的说明。
1.3 安装阿帕奇
编译之後,你将会在 src/ 目录里获得一份称为 `httpd' 的可执行文件。
阿帕奇的可执行文件发行套件会提供这个文件。
下一个步骤是为服务器编辑配置档。你应该会在称为 `conf' 的目录里发现三个 配置档的发行版本: srm.conf-dist, access.conf-dist 以及httpd.conf-dist 。把它们复制成所需的 srm.conf, access.conf 及httpd.conf 文件。
首先编辑 httpd.conf 。这设定此服务器一般的属性;端口号,执行者的身分等 等。接下来编辑 srm.conf 文件;这设定文件树的根目录,指定像是服务端剖析 的 HTML 或内部的影像地图(imagemap)剖析等等功能。最後编辑 access.conf 文 件,至少作些存取(access)的基本设定。
最後,调用httpd 程序,使用 -f 参数配合 httpd.conf 所在的完整路径。像是 ,最普遍的例子:
/usr/local/etc/apache/src/httpd -f
/usr/local/etc/apache/conf/httpd.conf
现在服务器应该已经开始执行。
依照预设 srm.conf 以及 access.conf 这些文件是藉由名称定位的;
要藉由其它的名称来指定调用它们的话,可以在 httpd.conf 里面使用AccessCo nfig 以及 ResourceConfig 指令。
第二章
启动阿帕奇
2.1 启动阿帕奇
httpd 这支程序可以藉由网际网路服务程序 inetd 在每一次有连线要进入 HTTP 服务的时候启动,或者另一种方式,它也可以作为服务程序(daemon)持续地执行 ,处理请求。无论选择哪一种方式,都必须设定这个 ServerType 指令告诉服务 器它要如何执行。
2.2 命令列选项
下列选项可以用在 httpd 的命令列上:
-d serverroot
把 ServerRoot 这个参数的起始值设定为 serverroot 。这可以藉由在配置文件 里面的 ServerRoot 命令来加以改变。此预设为/usr/local/etc/httpd 。
-f config
启动时执行在 config 文件里面的指令。如果 config 没有以 /作为开始的话, 那麽它会被当作相对於 ServerRoot 的路径。此预设值是 conf/httpd.conf 。
-X
以单一程序(single-process)模式执行,只用在内部除错;服务程序不会脱离终 端作业或是产生任何子程序。不要使用这个模式来提供正常的网页服务。
-v
列印 httpd 的版本,然後结束。
-?
列印 httpd 选项的一份列表,然後结束。
2.3 配置档
此服务器将会读取三个配置指令文件。任何指令都可以出现在这些文件任何一个 里面。这些文件的名称是相对於服务器的根目录(server root) ;
这是根是藉由 ServerRoot 指令,或是 -d 这个命令列旗标所指定的。
依惯例这些文件是:
conf/httpd.conf
包含控制服务程序运作的指令。文件名称可以配合 -f 命令列旗标加以改变。
conf/srm.conf
包含控制服务器提供给客户端之文件规格的指令。文件名称可以配合 ResourceC onfig 指令加以改变。
conf/access.conf
包含控制文件之存取的指令。文件名称可以配合 AccessConfig指令加以改变。
无论如何,这些惯例并不需要完全遵奉。
此服务器也会读取一个包含 MIME 文件型态的文件;这个文件名称藉由TypesCon fig 指令设定,而且有个 conf/mini.types 作为预设。
2.4 记录档
2.4.1 pid 档
服务程序启动时,它把父程序 httpd 的程序码(process id)存往这个log/httpd .pid 文件。这个文件名称可以配合 PidFile 指令加以改变。这个程序码由管理 者用来重新启动或终止服务程序;一个 HUP 信号会使服务程序重新读取其配置档 而一个 TERM 信号会使它终止。
如果程序不正常地死掉(或被杀掉),那麽必须杀掉 httpd 子程序。
2.4.2 错误记录
服务器会将错误讯息记录到一个记录档去,预设为log/error_log 。
文件名称可以藉由 ErrorLog 指令设定;可以为不同的虚拟主机设定不同的错误 记录。
2.4.3 传输记录
服务器一般会将每个请求记录到一个传输档,预设为logs/access_log。文件名称 可以藉由 TransferLog 指令设定;可以为不同的虚拟主机设定不同的传输记录。
第三章
阿帕奇核心部份(core)的特色
这些配置参数控制核心部份的阿帕奇特色,而且是固定可以使用的。
3.1 AccessConfig 指令
语法: AccessConfig 文件名称
预设: AccessConfig conf/access.conf
用於: server config, virtual host
状态: 核心
此服务器读取 ResourceConfig 文件之後将会继续读取这个文件以取得更多指令 。文件名称系相对於 ServerRoot 路径。此特色可以使用如下的方式关闭:
AccessConfig /dev/null
原本这个文件只包含 节区;事实上它现在可以包含任何可以用於服务器配置的指 令。
3.2 AccessFileName 指令
语法: AccessFileName 文件名称
预设: AccessFileName .htaccess
用於: server config, virtual host
状态: 核心
回传文件给客户端的时候,如果目录的存取控制档有启动,服务器会在到达这份 文件的路径中的每个目录里以此名称搜寻存取控制档。例如:
AccessFileName .acl
在回传 /usr/local/web/index.html 这份文件前,此服务器将会读取/.acl, /u sr/.acl, /usr/local/.acl 以及 /usr/local/web/.acl 以取得指令,除非以如 下的方式关闭它们:
AllowOverride None
3.3 AllowOverride 指令
语法: AllowOverride override override ...
预设: AllowOverride All
用於: directory
状态: 核心
服务器找到 AccessFileName 指定的文件时会需要知道该文件所宣告的哪些指令 可以改变稍早的存取资讯。
Override 可以设为 None 在此情况下服务器将不会读取该档,而设为All 的话服 务器将会允许所有的指令,或是下列其中之一:
AuthConfig
允许验认指令的使用(AuthDBMGroupFile, AuthDBMUserFile,AuthGroupFile, Au thName, AuthType,AuthUserFile and require)
FileInfo
允许控制文件型态之指令的使用(AddEncoding, AddLanguage,AddType, Default Type and LanguagePriority)
Indexes
允许控制目录索引之指令的使用(AddDescription, AddIcon,AddIconByEncoding , AddIconByType, DefaultIcon,DirectoryIndex, FancyIndexing, HeaderName ,IndexIgnore,IndexOptions and ReadmeName)
Limit
允许控制存取主机之指令的使用(allow, deny and order)
Options
允许控制特定目录特色之指令的使用(Options and XbitHack)
3.4 AuthName 指令
语法: AuthName 验认领域
用於: directory, .htaccess
需求: AuthConfig
状态: 核心
这个指令为某个目录设定验认区域的名称。这个区域会送给客户端所以使用者知 道要传送的使用者名称以及密码。它必须藉由 AuthType 以及require 指令来完 成,而且要有像 AuthUserFile 以及 AuthGroupFile这些指令配合运作。
3.5 AuthType 指令
语法: AuthType 型态
用於: directory, .htaccess
需求: AuthConfig
状态: 核心
这个指令为某个目录选择使用这验认型态。目前只有 Basic 实作出来。它必须藉 由 AuthName 以及 require 指令来完成,而且还要有像是AuthUserFile 以及 A uthGroupFile 这些指令配合运作。
3.6 BindAddress 指令
语法: BindAddress 服务器位址
预设: BindAddress *
用於: server config
状态: 核心
一台 Unix 的 http 服务器可以监听到该服务机器每个 IP 位址的连线或者只注 意该服务机器的一个位址。服务器位址可以是:
。*
。一个 IP 位址
。一个完整的网际网路领域名称
如果此值是 * 的话,那麽该服务器将会监听每一个 IP 位址的连线,
否则它将只监听指定的 IP 位址。
这个选项可以用来作为另一种支援虚拟主机的方式取代节段。
3.7 DefaultType 指令
语法: DefaultType mime-型态
预设: DefaultType text/html
用於: server config, virtual host, directory, .htacess
需求: FileInfo
状态: 核心
有些时候服务器会被要求提供某份文件,此文件不能藉由其 MIME 型态对映来决 定型态。
服务器必须知会客户端文件所包含的型态(content-type),所以不知道型态的时 候它便使用 DefaultType 。例如:
DefaultType image/gif
对於包含许多没有 .gif 副文件名的 gif 图形目录是合适的。
3.8 指令
语法: ...
用於: server config, virtual host
状态: 核心
以及 用来把一组指令包装起来,这些指令将只应用到所指明的目录及其子目录上 。任何可以用於 directory 的指令都可以使用。Directory 是到某目录的完整路 径,或是替代字元串(widecard string) 。在替代字元串中 `?' 能够符合任何单 一字元,而 `*' 能够符合任何顺序的一些字元。例如:
Option Indexes FollowSymLinks
如果有多个 directory 节区能符合包含该文件的目录(或其父目录),那麽分布 在 .htaccess 文件里的指令是以最短先符合的顺序加以应用的,例如:
AllowOverride None
AllowOverride FileInfo
存取 /home/web/dir/doc.html 这份文件的步骤是:
。应用 AllowOverride None 指令(关掉 .htaccess 文件)。
。应用 AllowOverride FileInfo 指令(目录 /home/web )。
。应用任何在 /home/web/.htaccess 里面的 FileInfo 指令。
这个 directory 节段典型是用在 access.conf 文件里,但它们可以出现在任何 配置档里。 指令不能巢状使用,而且不能出现在节段里。
3.9 DocumentRoot 指令
语法: DocumentRoot 目录名称
预设: DocumentRoot /usr/local/etc/httpd/htdocs
用於: server config, virtual host
状态: 核心
这个指令设定 httpd 从这个目录提供文件服务。除非符合像是 Alias这样的指令 ,服务器把所要求的 URL 附加到文件根 (document root)来组合到达文件的路径 。例如:
DocumentRoot /usr/web
如此对於 http://www.my.host.com/index.html 文件的存取便会参照到 /usr/w eb/index.html 。
3.10 ErrorDocument 指令
语法: ErrorDocument 错误代码 文件
用於: server config, virtual host
状态: 核心
有问题或错误发生的状况下,可以配置阿帕奇做四种反应
1. 如同 NCSA httpd 1.3 的反应
2. 输出自定的(customized)讯息
3. 重导到某个本地的 URL 以处理该问题/错误
4. 重导到某个外部的 URL 以处理该问题/错误
2-4 是使用 ErrorDocument 来配置,其後跟随 HTTP 反应码以及讯息或是 URL 。
ErrorDocument 500 /cgi-bin/tester
ErrorDocument 404 /cgi-bin/bad_urls.pl
ErrorDocument 401 http://www.foo.bar/subscription_info.html
ErrorDocument 403 "Sorry can't allow you acess today
参阅: 自定回应的文件。
3.11 ErrorLog 指令
语法: ErrorLog 文件名称
预设: ErrorLog logs/error_log
用於: server config, virtual host
状态: 核心
这个错误记录指令设定文件名称,服务器将会把其遭遇的每个错误记录到这个文 件去。如果文件名称不是以 / 开始的话那麽它就会被假设为相对於 ServerRoot 的路径。例如:
ErrorLog /dev/null
这会有效地关掉错误记录。
3.12 Group 指令
语法: Group unix-群组
预设: Group #-1
用於: server config
状态: 核心
这个 Group 指令设定服务器回答要求时所处的群组。为了要能够使用这个指令, 必须以 root 身分起始执行独立的服务器。 Unix-群组可以是这些其中之一:
群组的名称
藉由名称参照所给的群组。
# 跟随著群组号码
藉由号码参照某个群组。
建议你特别设立一个群组来执行这个服务器。某些管理者使用 nobody这个使用者 ,但是这并非永远可行或合适的。
注意: 如果你以非 root 使用者的身分启动这个服务器,它将无法切换到指定的 群组,并且取而代之的是它将会继续以原来的使用者所属群组来执行。
安全: 参阅 User 指令对安全情况的讨论。
3.13 IdentityCheck 指令
语法: IdentifyCheck 布林值
预设: IdentifyCheck off
用於: server config
状态: 核心
这个指令为每次的连线起始 RFC931-相容的远端使用者名称记录,其中客户端需 得执行 identd 或者是类似的东西。这项资讯记录在存取记录(access log)里。 布林值是 on 或者 off 。
除非是作为基本的使用量追踪,这项资讯无论如何不能真的信赖。
3.14 指令
语法: ...
用於: 任何地方
状态: 核心
以及 用来把一组存取控制指令包装起来,这些指令将只应用到指定的存取方式上 ,其中的方式是指任何有效的 HTTP 方式(method)。除了 或是 之外的任何指令 都可以使用;大部分都不会被 影响。例如:
require valid-user
如果有个存取控制指令出现在 指令之外,那麽它会被应用到所有的存取方式上。
3.15 MaxClient 指令
语法: MaxClients 数字
预设: MaxClients 150
用於: server config
状态: 核心
这个 MaxClients 指令设定所能支援的同时存取要求数目;不会建立比此值还多 的子程序。
3.16 MaxRequestPerChild 指令
语法: MaxRequestsPerChild 数字
预设: MaxRequestsPerChild 0
用於: server config
状态: 核心
MaxRequestsPerChild 这个指令设定一个独立的子服务程序将能处理的请求数量 。在处理 MaxRequestsPerChild 个请求之後,子程序将会被终止。如果 MaxReq uestsPerChild 为 0 的话,那麽该程序永远不会被终止。
MaxRequestsPerChild 设为非 0 的值做为限制有两个好处:
。藉由记忆体使用量限制程序使用的记忆体数量;
。藉由赋予程序有限的存留时间,可以在服务器负载降低时协助
减少程序的数目。
3.17 MaxSpareServers 指令
语法: MaxSpareServers 数字
预设: MaxSpareServers 10
用於: server config
状态: 核心
MaxSpareServers 这个指令设定最大闲置(idle)子服务程序数量。闲置子服务程 序是目前没有处理要求的程序。如果有多於 MaxSpareServers的暂停程序,那麽 父程序会终止超过此数量的子程序。
只有在非常忙碌的站台上才有调整这个选项的需要。把这个参数设为非常大的数 目通常总是个不好的主意。
参阅 MinSpareServers 以及 StartServers 。
3.18 MinSpareServers 指令
语法: MinSpareServers 数字
预设: MinSpareServers 5
用於: server config
状态: 核心
MinSpareServers 这个指令设定最大闲置(idle)子服务程序数量。闲置子服务程 序是目前没有处理要求的程序。如果有属於 MinSpareServers的暂停程序,那麽 父程序会以最高每秒一个的速率建立新的子程序。
只有在非常忙碌的站台上才有调整这个选项的需要。把这个参数设为非常大的数 目通常总是个不好的主意。
参阅 MaxSpareServers 以及 StartServers 。
3.19 Options 指令
语法: Option 选项 选项 ...
用於: server config, virtual host, directory, .htaccess
需求: Options
状态: 核心
Options 这个指令控制某个特定目录所能使用的服务器特色。选项可以设为 NON E 在此情况下没有额外的特色会起动,或者可以是下列的一个或几个:
All
除了 MultiViews 以外的所有选项。
ExecCGI
CGI 指令稿的执行权限。
FollowSymLinks
服务器将会跟照目录里的符号链结。
IncludesNOEXEC
服务端含入(Server-side include) 的权限。
Indexes
如果有个 URL 对映到所要求的目录,而且目录里面并没有目录索引(DirectoryI ndex, e.g. index.html) 存在,那麽服务器将会传回这个目录格式化後的列表。
MultiViews
允许 MultiViews 内容协商。
SymLinksIfOwnerMatch
只有在目标文件或目录与符号链结的拥有者相同时服务器才会去跟照符号链结。
如果多个选项可以应用到某个目录上,那麽最底下的指定会完成;选项不会合并 。例如:
Options Indexes FollowSymLinks
Option Includes
这样只有 Includes 会设定到 /web/docs/spec 目录上。
3.20 PidFile 指令
语法: PidFile 文件名称
预设: PidFile logs/httpd.pid
用於: server config
状态: 核心
PidFile 这个指令设定服务器记录服务程序的程序号码所使用的文件。
如果文件名称不是以 / 开始那麽它会被假定是相对於ServerRoot 的目录。这个 PidFile 只使用在独立(standalone)模式。
能够送个信号给服务器通常会是有用的,可以关闭再重新打开错误记录与传输记 录,以及重新读取配置档。这是藉由传送 SIGHUP (kill -1)信号到列在 PidFil e 里的程序号码来达成的。
3.21 Port 指令
语法: Port 数字
预设: Port 80
用於: server config
状态: 核心
这个 Port 指令设定服务器监听的网路端口号。数字是 0 到 65535 的一个数目 ;某些端口号(特别是低於 1024 的)保留给特殊的协定。参阅/etc/services 里定义的一些端口的列表;标准 http 协定使用 80 端口。
Port 80 是 Unix's 的一个特别端口。所有低於 1024 的端口号都是保留给系统 使用的,例如,一般使用者(non-root)不能使用它们;取而代之的是他们可以使 用较高的端口号。
要使用 80 端口你必须以 root 帐号启动服务器。在连接到该端口後,接受请求 之前,阿帕奇将会切换为藉由 User 指令所设定权限较低的使用者身分。
如果你不能使用 80 端口,选择任何其它没有使用到的端口。非 root 使用者必 须选择高於 1023 的端口号,像是 8000 。
安全: 如果你是以 root 启动服务器,确定不要把 User 设为root 。
如果你以 root 身分处理连线的话,你的站台可能会暴露在攻击下。
3.22 require 指令
语法: require 项目名称 项目 项目 ...
用於: directory, .htaccess
需求: AuthConfig
状态: 核心
这个指令选择经过验认可以存取目录的使用者。允许使用的语法是:
。require user 使用者辨识码 使用者辨识码 ...
只有注明的使用者能存取该目录。
。require group 群组名称 群组名称 ...
只有在注明群组里的使用者能存取该目录。
。require valid-user
所有合法的使用者都可以存取该目录。
如果 require 出现在 节段里,那麽它会限制所注明的存取方式,否则它会限制 所有的存取方式。例如:
AuthType Basic
AuthName somedomain
AuthUserFile /web/users
AuthGroupFile /web/group
Limit
require group admin
Require 必须藉由 AuthName 以及 AuthType 这些指令,以及配合像是AuthUser File 以及 AuthGroupFile 指令(用来定义使用者与群组)以便正确运作。
3.23 ResourceConfig 指令
语法: ResourceConfig 文件名称
预设: ResourceConfig conf/srm.conf
用於: server config, virtual host
状态: 核心
此服务器读取 httpd.conf 文件之後将会继续读取这个文件以取得更多指令。文 件名称系相对於 ServerRoot 路径。此特色可以使用如下的方式关闭:
ResourceConfig /dev/null
原本这个文件包含大部分指令,除了服务器配置及 节区以外;事实上它现在可以 包含任何可以用於服务器配置的指令。
3.24 ServerAdmin 指令
语法: ServerAdmin 电子邮件地址
用於: server config, virtual host
状态: 核心
ServerAdmin 设定电子邮件地址,服务器回传任何错误讯息给客户端时会包含这 个地址。
设定一个像这样的地址可能会有用,例如
ServerAdmin [email protected]
因为使用者并不会永远知道他们是跟在哪台服务器打交道!
3.25 ServerName 指令
语法: ServerName 完整的领域名称
用於: server config, virtual host
状态: 核心
这个 ServerName 指令设定服务器的主机名称;这只有在建立重导 URL的时候使 用。如果没有指定它,那麽服务器会试图从其 IP 位址来决定;然而这个方法可 能不能信赖,或者无法回传适当的主机名称。例如:
ServerName www.wibble.com
如果正式(canonical) 名称是 monster.wibble.com 它还能够使用上述的名称。
3.26 ServerRoot 指令
语法: ServerRoot 目录名称
预设: ServerRoot /usr/local/etc/httpd
用於: server config
状态: 核心
这个 ServerRoot 指令设定服务器所在的目录。它典型会包含有子目录conf/ 以 及 logs/ 。其它配置档的相对路径是相对於这个路径。
3.27 ServerType 指令
语法: ServerType 型态
预设: ServerType standalone
用於: server config
状态: 核心
这个 ServerType 指令设定系统如何执行这个服务器。型态可以是其中之一:
inetd
服务器将由系统程序 inetd 执行;启动服务器使用的命令加在
/etc/inetd.conf 文件里。
standalone
服务器将会作为服务程序(daemon)执行;启动服务器使用的命令加在系统启动指 令稿里(/etc/rc.local or /etc/rc.d/...)。
inetd 在这两个选项里是较少使用的。因为接收到每个 http 连线就会重头开始 执行一份新的服务器拷贝;连线结束後,这支程序就会结束。
每次连线要付出的代价很高,但是因为安全上的理由,某些管理者喜欢这个选项 。
standalone 是 ServerType 使用最普遍的设定,因为它更为有效率。
服务器启动一次,而且服务所有的连线。如果你想要执行阿帕奇来服务一个忙碌 的站台, standalone 大概将会是你唯一的选择。
安全: 如果你对安全性有偏执,以 inetd 模式来执行它。两种方式都不能绝对确 保安全性,但是大部分人使用 standalone 用得很高兴时,inetd 大概比较不会 遭到攻击。
3.28 StartServers 指令
语法: StartServers 数字
预设: StartServers 5
用於: server config
状态: 核心
这个 StartServers 指令设定启动时建立的子服务程序数量。因为程序的数量是 依据负载动态控制的,通常没有什麽理由得要调整这个参数。
参阅 MinSpareServers 以及 MaxSpareServers 。
3.29 TimeOut 指令
语法: TimeOut 数字
预设: TimeOut 1200
用於: server config
状态: 核心
TimeOut 这个指令设定服务器接收一个请求以及完成一个请求最长的等待时间, 以秒为单位。所以如果它花费比 TimeOut 更多秒来让客户端传送请求或接收回应 ,服务器将会中断该连线。因此 TimeOut 限制一次可以传输的最大资料量;对於 大文件,以及慢速网路传输时间可能会很久。
3.30 User 指令
语法: User 使用者辨识码
预设: User #-1
用於: server config
状态: 核心
User 这个指令设定服务器用来回答请求的使用者辨识码。为了要能够使用这个指 令,必须以 root 身分起始执行独立的服务器。Unix使用者辨识码可以是其中之 一:
一个使用者名称
藉由名称参照给定的使用者。
# 跟随著使用者编号
藉由使用这个编号参照他们。
这个使用者应该不能有存取外界所不能看到的文件的权限,而且与此类似,这个 使用者应该不能执行对 httpd 要求而言没有意义的程序码。
建议你特别为执行这个服务器设立新的使用者以及群组。某些管理者使用 nobod y 但是这并非永远可行或合适的。
注意: 如果你以非 root 使用者的身分启动这个服务器,它将无法切换到权限较 低的使用者,并且取而代之的是它将会继续以原使用者身份来执行。如果你真的 是以 root 启动这个服务器,那麽这个父程序一般仍然以 root 身分在执行。
安全: 不要把 User(or Group) 设为 root 除非你确实知道你在做什麽以及会有 怎麽样的危险。
3.31 指令
语法: ...
用於: 服务器配置
位於: 核心部份
以及 用来把一组指令包装起来,这些
指令将只会应用到某个特定的虚拟主机上。任何可用於虚拟主机的指令都可以使 用。当服务器接收到某个特定主机上的文件请求的时候,它会使用包装在 节段里 的配置指令。位址可以是
。虚拟主机的 IP 位址
。虚拟主机的 IP 位址的完整领域名称。
□例:
ServerAdmin [email protected]
DocumentRoot /www/docs/host.foo.com
ServerName host.foo.com
ErrorLog logs/host.foo.com-error_log
TransferLog logs/host.foo.com-access_log
目前,每段 VirtualHost 必须符合服务器不同的 IP 位址,所以服务机器必须配 置成能够接收多个位址的 IP 封包。如果该机器并没有多个网路界面,那麽这可 以配合 ifconfig alias 指令来完成(如果你的作业系统支援这个功能),或是 配合像是 VIF(for SunOS(TM)4.1.x)一类的核心修补档。
第四章
阿帕奇标准模组
4.1 mod_access 模组
这个模组包含在 mod_access.c 文件里,而且依预设会编译进去。它提供以客户 端主机名称或 IP 位址为基础的存取控制。
4.1.1 allow
语法: allow from 主机 主机 ...
用於: directory, .htaccess
需求: Limit
状态: 基础
模组: mod_access
allow 这个指令影响能够存取某特定目录的主机;典型是用在节区里。主机可以 是下列之一:
all
允许所有的主机存取。
(部份)领域名称
允许名称为此字串或以此字串结束的主机存取。
完整的 IP 位址
允许该 IP 位址的主机存取。
部份的 IP 位址
某个 IP 位址第一到第三个位元组,作为子网路限制之用。
□例:
allow from .ncsa.uiuc.edu
允许在指定领域里的所有主机进行存取。
注意这比较的是整个的内容;所以 bar.edu 不会符合foobar.edu 。
参阅 deny 以及 order 指令。
4.1.2 deny
语法: deny from 主机 主机 ...
用於: directory, .htaccess
需求: Limit
状态: 基础
模组: mod_access
deny 这个指令影响能够存取某特定目录的主机;典型是用在节区里。主机可以是 下列之一:
all
拒绝所有的主机存取
(部份)的领域名称
拒绝名称为此字串或以此字串结束的主机存取。
完整的 IP 位址
拒绝该 IP 位址的主机存取。
部份的 IP 位址
某个 IP 位址第一到第三个位元组,作为子网路限制之用。
□例:
deny from 16
拒绝在指定网路里的所有主机进行存取。
注意这比较的是整个的内容;所以 bar.edu 不会符合foobar.edu 。
参阅 allow 以及 order 指令。
4.1.3 order
语法: order 次序
预设: order deny, allow
用於: directory, .htaccess
需求: Limit
状态: 基础
模组: mod_access
order 这个指令控制评估 allow 以及 deny 指令的次序。次序可以是其中之一:
deny,allow
在 allow 指令之前评估 deny 指令
allow,deny
在 deny 指令之前评估 allow 指令
mutual-failue
只有那些出现在 allow 列表里而且没有出现在 deny 列表里的主机可以进行存取 。
□例:
order deny,allow deny from all allow from .ncsa.uiuc.edu
允许在 ncsa.uiuc.edu 这个领域里的主机进行存取;拒绝所有其它的主机存取。
4.2 mod_alias 模组
这个 mod_alias 模组包含在 mod_alias.c 文件里,而且依预设会编译进去。它 提供的功能是对映主机文件系统的不同部份到文件树去,及URL 转向。
4.2.1 Alias
语法: Alias url-路径 目录-文件名称
用於: server config, virtual host
状态: 基础
模组: mod_alias
Alias 这个指令使文件可以存放在 DocumentRoot 之外的本地文件系统里。以 u rl-路径 开始的 URLs 将会被对映到以 目录-文件名称 开始的本地文件去。例如 :
Alais /image /ftp/pub/image
对於 http://myserver/images/foo.gif 的这个请求会使得服务器回传文件 /ft p/pub/image/foo.gif 。
参阅 ScriptAlias 指令。
4.2.2 Redirect
语法: Redirect url-路径 url
用於: server config, virtual host
状态: 基础
模组: mod_alias
Redirect 这个指令对映旧的 URL 到新的去。新的 URLs 会被回传给客户端以便 配合新的位址再次尝试撷取。Url-路径 (%-decoded)路径;
任何以这个路径作为开始的文件请求都将回传一个错误并重导到以 url作为开始 的新(%-encoded) url 去。例如:
Redirect /service http://foo2.bar.com/service
如果客户端请求 http://myserver/service/foo.txt 则会被告知应该撷取 http ://foo2.bar.com/service/foo.txt 来取代。
注意: 无论配置档里的次序如何,Redirect 指令优先於 Alias 以及ScriptAlia s 指令。
4.2.3 ScriptAlias
语法: ScriptAlias url-路径 目录-文件名称
用於: server config, virtual host
状态: 基础
模组: mod_alias
ScriptAlias 这个指令除了还另外把目标目录标记为包含 CGI 指令稿以外其功能 与 Alias 指令相同,以 url-路径 作为开始的 URLs 将会被对映到以 目录-文件 名称 作为开始的指令稿去。例如:
ScriptAlias /cgi-bin/ /web/cgi-bin/
对於 http://myserver/images/foo 的这个请求会使服务器去执行指令稿 /web/ cgi-bin/foo 。
4.3 mod_asis 模组
这个模组包含在 mod_asis.c 文件里,而且依预设会编译进去。它是为.asis 文 件而提供的。任何 mime 型态为 httpd/send-as-is 的文件都将由这个模组处理 。
4.3.1 目的
允许定义文件的型态,如此阿帕奇可以不加 HTTP 标头(headers) 传送它们。
这可以用来从服务器传送任何型态的资料,包括重导(redirects) 以及其它特殊 的 HTTP 回应,而不需要 cgi-script 或是 nph script 。
4.3.2 用法
在服务器配置档里,定义一个称为 httpd/send-as-is 的 mime 型态,例如
AddType httpd/send-as-is asia
这定义 .asis 副文件名是新的 httpd/send-as-is mime 型态。任何副文件名是 .asis 的文件内容由阿帕奇送出给客户端时几乎不会有任何的改变。客户端将需 要 HTTP 标头来联系,所以别忘记它们。 A Status:仍然需要标头;此资料应该 是 3位数字的 HTTP 回应码,跟随一段文字讯息。
这里有个示例档,其内容是告诉客户端有个文件被重定向送出。
Status: 302 Now where did I leave that URL
Location: http://xyz.abc.com/foo/bar.html
content-type: text/html
head>
/HEAD>
Fred's exceptionally wonderful
page has moved toJoe'ssite
注意: 服务器一定会在送给客户端的资料里加上 Date: 以及 Server:
标头,所以不应该包含在这个文件里。服务器不会加上 Last-Modified标头,所 以应该要才对。
4.4 mod_auth 模组
这个模组包含在 mod_auth.c 文件里,而且依预设会编译进来。它提供的功能是 使用文字文件来执行使用者验认。
4.4.1 AuthGroupFile
语法: AuthGroupFile 文件名称
用於: directory, .htaccess
需求: AuthConfig
状态: 基础
模组: mod_auth
AuthGroupFile 这个指令设定一个文本文件的名称,这个文本文件包含用来执行 使用者验认的使用者群组列表。文件名称是群组文件的绝对路径。
这个群组文件的每一行包括一个群组名称,跟随一个冒号,其後是藉由空白隔开 的使用者名称。例如:
mygroup: bob joe anne
注意搜寻很大的群组文件是很没有效率的;应该用 AuthDBMGroupFile来取代它。
安全: 确定这个 AuthGroupFile 储放在服务器的文件树之外;不要把它放在它保 护的目录里。否则,客户端将能够下载这个AuthGrpupFile文件。
参阅 AuthName, AuthType 以及 AuthUserFile 。
4.4.2 AuthUserFile
语法: AuthUserFile 文件名称
用於: directory, .htaccess
需求: AuthConfig
状态: 基础
模组: mod_auth
这个 AuthUserFile 指令设定一个文本文件的名称,这个文本文件包含用来执行 使用者验认的使用者以及密码列表。文件名称是到群组文件的绝对路径。
这个使用者文件的每一行包括一个使用者名称,跟随一个冒号,其後是藉由 cry pt() 加密过的密码。多个相同使用者的情况没有定义。
注意搜寻很大的使用者文件是很没有效率的;应该用 AuthDBMUserFile来取代它 。
安全: 确定这个 AuthUserFile 储放在服务器的文件树之外;不要把它放在它所 保护的目录里。否则,客户端将能够下载这个AuthUserFile文件。
参阅 AuthName, AuthType 以及 AuthGroupFile 。
4.5 mod_cgi 模组
这个模组包含在 mod_cgi.c 文件里,而且依预设会编译进来。它提供CGI 指令稿 的执行能力。任何 mime 型态为 application/x-httpd-cgi的文件都将由这个模 组处理。
4.5.1 摘要
任何拥有 application/x-httpd-cgi 之 mime 型态的文件都会被当作CGI 指令稿 ,而且由服务器执行,并把输出传回客户端。文件可以藉由使用 AddType 指令所 定义的副文件名,或是藉由放在 ScriptAlias 所设定的目录来成为这种型态。
当服务器启动一个 CGI 指令稿时,它将加上一个称为DOCUMENT_ROOT的环境参数 。这个参数将会包含 DocumentRoot 配置的内容。
4.5.2 CGI 环境参数
这个服务器将会设立定义在 CGI 规格中的 CGI 环境参数,配合下列的但书:
REMOTE_HOST这只有在服务器没有配合 MINIMAL_DNS 编译的时候才会设定。
REMOTE_IDENT
这只有在 IdentityCheck 设为 on 的时候才会设定。
REMOTE_USER
这只有在 CGI 指令稿需要验认的时候才会设定。
4.6 mod_dir 模组
这个模组包含在 mod_dir.c 文件里,而且依预设会编译进来。它提供作为目录索 引之用。
4.6.1 摘要
这个模组控制目录索引。目录的索引可以有两种来源:
。一个由使用者所撰写的文件,典型是称为 index.html 的文件
。DrectoryIndex 指令设定这个文件的名称。
。另一种是由服务器所产生的列表。其它的指令控制这个列表的格式。AddIcon, AddIconByEncoding and AddIconByType 都是用来设定显示不同文件型态所使用 的图示列表;对於每种列出的文件型态,显示列出的第一个符合的图示。
4.6.2 AddDescription
语法: AddDescription 字串 文件 文件 ...
用於: server config, virtual host, directory, .htaccess
需求: Indexes
状态: 基础
模组: mod_dir
这是设定某文件所要显示的描述,供象徵索引(FancyIndexing) 使用。
文件是指所要描述之文件的副文件名,部份文件名称,替代字元表示式或完整文 件名称。 字串以双引号(") 括起。例如:
AddDescription "The planet Mars" /web/pics/mars.gif
4.6.3 AddIcon
语法: AddIcon 图示 名称 名称 ...
用於: server config, virtual host, directory, .htaccess
需求: Indexes
状态: 基础
模组: mod_dir
这设定显示在文件名称之後的图示供作象徵索引之用。图示可以是某个图示的相 对 URL 或是给非图形化浏览器使用的文字标签。
对於目录可以使用 ^^DIRECTORY^^ 这个名称,^^BLANKICON^^ 可以用在空白行( 使列表的格式正确),名称也可以是扩充文件名,替代字元表示式,部份或完整 的文件名称。例如:
AddIcon (IMG,/icons/image.xbm) .gif .jpg .xbm
AddIcon /icons/dir.xbm ^^DIRECTORY^^
AddIcon /icons/backup.xbm *~
可能的话,使用 AddIconByType 应该比 AddIcon 好。
4.6.4 AddIconByEncoding
语法: AddIconByEncoding icon mime-encoding mime-encoding ...
用於: server config, virtual host, directory, .htaccess
需求: Indexes
状态: 基础
模组: mod_dir
这设定显示在有 mime-encoding 的文件名称之後的图示供作象徵索引之用。图示 可以是某个图示的相对 URL 或是给非图形化浏览器使用的文字标签。
Mime-encoding 是个符合要求之编码内容的替代字元表示式。例如:
AddIconByEncoding /icons/compress.xxbm x-compress
4.6.5 AddIconByType
语法: AddIconByType icon mime-type mime-type ...
用於: server config, virtual host, directory, .htaccess
需求: Indexes
状态: 基础
模组: mod_dir
这设定显示在 mime-type 的文件名称之後的图示供作象徵索引之用。图示可以是 某个图示的相对 URL 或是给非图形化浏览器使用的文字标签。
Mime-encoding 是个符合要求之 mime 型态的替代字元表示式。例如:
AddIconByType (IMG, /icons/image.xbm) image/*
4.6.6 DefaultIcon
语法: DefaultIcon url
用於: server config, virtual host, directory, .htaccess
需求: Indexes
状态: 基础
模组: mod_dir
DefaultIcon 这个指令设定当不知道指定的图示为何时显示的图示供作象徵索引 之用。URl 是该图示的(%-escaped) 相对 URL 。例如:
DefaultIcon /icon/unknow.xbm
4.6.7 DirectoryIndex
语法: DirectoryIndex local-url local-url
用於: server config, virtual host, directory, .htaccess
需求: Indexes
状态: 基础
模组: mod_dir
DirectoryIndex 这个指令设定当客户端藉由指定没有以文件做结尾的目录名称请 求该目录的索引时所要找寻的来源列表。Local-url 是在伺服器上相对於请求之 目录的文件;它通常是目录里某个文件的名称。可以有好几个 URL ;服务器会回 传它找到的第一个。如果这些来源没有一个存在,那麽服务器将会自行产生一份 该目录的列表。例如:
DirectoryIndex index.html
然後,对於 http://myserver/docs/ 的请求若该来源设定的文件存在的话会回传 http://myserver/docs/index.html,如果不存在就回传该目录的列表。
注意该文件并不需要是相对於该目录的:
DirectoryIndex index.html index.txt /cgi-bin/index.pl
这会使得 /cgi-bin/index.pl 这个 CGI 指令稿在 index.html 以及index.txt 都不存在於该目录的情况下被起动。
4.6.8 FancyIndexing
语法: FancyIndexing 布林值
用於: server config, virtual host, directory, .htaccess
需求: Indexes
状态: 基础
模组: mod_dir
FancyIndexing 此指令设定目录的象徵索引选项。布林值可以是 on 或off。Ind exOptions 这个指令应该用来参照之。
4.6.9 HeaderName
语法: HeaderName 文件名称
用於: server config, virtual host, directory, .htaccess
需求: Indexes
状态: 基础
模组: mod_dir
HeaderName 这个指令设定插入索引列示顶部的文件名称。当案名称是要含入的文 件知名称,而且相对於索引的目录。服务器首先会把他当作是 HTML 文件试图含 入文件名称.html ,否则就当它是普通文本文件含入。例如:
HeaderName HEADER
当产生 /web 目录的索引时,服务器首先将会找寻 /web/HEADER.html这个 HTML 文件,若找到则将其含入,否则会含入 /web/HEADER 这个普通文本文件,如果 存在的话。
参阅 ReadmeName 。
4.6.10 IndexIgnore
语法: IndexIgnore 文件 文件 ...
用於: server config, virtual host, directory, .htaccess
需求: Indexes
状态: 基础
模组: mod_dir
-- 阿鲁的阿,阿鲁的鲁
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.101.165.26] -- ※ 转载:.月光软件站 http://www.moon-soft.com.[FROM: 202.104.33.69]
|
|