发信人: 8354217(梦幻老妖)
整理人: ipaq(2001-05-24 19:56:38), 站内信件
|
阿帕奇核心部份(core)的特色
这些配置参数控制核心部份的阿帕奇特色,而且是固定可以使用的。
3.1 AccessConfig 指令
语法: AccessConfig 文件名称
预设: AccessConfig conf/access.conf
用於: server config, virtual host
状态: 核心
此服务器读取 ResourceConfig 文件之後将会继续读取这个文件以取得
更多指令。文件名称系相对於 ServerRoot 路径。此特色可以使用如下
的方式关闭:
AccessConfig /dev/null
原本这个文件只包含 <Directory> 节区;事实上它现在可以包含任何
可以用於服务器配置的指令。
3.2 AccessFileName 指令
语法: AccessFileName 文件名称
预设: AccessFileName .htaccess
用於: server config, virtual host
状态: 核心
回传文件给客户端的时候,如果目录的存取控制档有启动,服务器会在
到达这份文件的路径中的每个目录里以此名称搜寻存取控制档。例如:
AccessFileName .acl
在回传 /usr/local/web/index.html 这份文件前,此服务器将会读取
/.acl, /usr/.acl, /usr/local/.acl 以及 /usr/local/web/.acl 以
取得指令,除非以如下的方式关闭它们:
<Directory />
AllowOverride None
</Directory>
3.3 AllowOverride 指令
语法: AllowOverride override override ...
预设: AllowOverride All
用於: directory
状态: 核心
服务器找到 AccessFileName 指定的文件时会需要知道该文件所宣告的
哪些指令可以改变稍早的存取资讯。
Override 可以设为 None 在此情况下服务器将不会读取该档,而设为
All 的话服务器将会允许所有的指令,或是下列其中之一:
AuthConfig
允许验认指令的使用(AuthDBMGroupFile, AuthDBMUserFile,
AuthGroupFile, AuthName, AuthType, AuthUserFile and
require)
FileInfo
允许控制文件型态之指令的使用(AddEncoding, AddLanguage,
AddType, DefaultType 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 以及 AuthGroupFile 这些指令配合运作。
3.6 BindAddress 指令
语法: BindAddress 服务器位址
预设: BindAddress *
用於: server config
状态: 核心
一台 Unix 的 http 服务器可以监听到该服务机器每个 IP 位址的连线
或者只注意该服务机器的一个位址。服务器位址可以是:
。*
。一个 IP 位址
。一个完整的网际网路领域名称
如果此值是 * 的话,那麽该服务器将会监听每一个 IP 位址的连线,
否则它将只监听指定的 IP 位址。
这个选项可以用来作为另一种支援虚拟主机的方式取代 <VirtualHost>
节段。
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 <Directory> 指令
语法: <Directory 目录> ... </Directory>
用於: server config, virtual host
状态: 核心
<Directory> 以及 </Directory> 用来把一组指令包装起来,这些指令
将只应用到所指明的目录及其子目录上。任何可以用於 directory 的
指令都可以使用。Directory 是到某目录的完整路径,或是替代字元串
(widecard string) 。在替代字元串中 `?' 能够符合任何单一字元,
而 `*' 能够符合任何顺序的一些字元。例如:
<Directory /usr/local/htppd/htdocs>
Option Indexes FollowSymLinks
</Directory>
如果有多个 directory 节区能符合包含该文件的目录(或其父目录)
,那麽分布在 .htaccess 文件里的指令是以最短先符合的顺序加以应
用的,例如:
<Directory />
AllowOverride None
</Directory>
<Directory /hoem/*>
AllowOverride FileInfo
</Directory>
存取 /home/web/dir/doc.html 这份文件的步骤是:
。应用 AllowOverride None 指令(关掉 .htaccess 文件)。
。应用 AllowOverride FileInfo 指令(目录 /home/web )。
。应用任何在 /home/web/.htaccess 里面的 FileInfo 指令。
这个 directory 节段典型是用在 access.conf 文件里,但它们可以
出现在任何配置档里。<Directory> 指令不能巢状使用,而且不能出现
在 <Limit> 节段里。
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/web/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 <Limit> 指令
语法: <Limit 方式 方式 ... > ... </Limit>
用於: 任何地方
状态: 核心
<limit> 以及 </Limit> 用来把一组存取控制指令包装起来,这些指令
将只应用到指定的存取方式上,其中的方式是指任何有效的 HTTP 方式
(method)。除了 <Limit> 或是 <Directory> 之外的任何指令都可以
使用;大部分都不会被 <Limit> 影响。例如:
<Limit GET POST>
require valid-user
</Limit>
如果有个存取控制指令出现在 <Limit> 指令之外,那麽它会被应用到
所有的存取方式上。
3.15 MaxClient 指令
语法: MaxClients 数字
预设: MaxClients 150
用於: server config
状态: 核心
这个 MaxClients 指令设定所能支援的同时存取要求数目;不会建立比
此值还多的子程序。
3.16 MaxRequestPerChild 指令
语法: MaxRequestsPerChild 数字
预设: MaxRequestsPerChild 0
用於: server config
状态: 核心
MaxRequestsPerChild 这个指令设定一个独立的子服务程序将能处理的
请求数量。在处理 MaxRequestsPerChild 个请求之後,子程序将会被
终止。如果 MaxRequestsPerChild 为 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 这个指令控制某个特定目录所能使用的服务器特色。选项可以
设为 NONE 在此情况下没有额外的特色会起动,或者可以是下列的一个
或几个:
All
除了 MultiViews 以外的所有选项。
ExecCGI
CGI 指令稿的执行权限。
FollowSymLinks
服务器将会跟照目录里的符号链结。
IncludesNOEXEC
服务端含入(Server-side include) 的权限。
Indexes
如果有个 URL 对映到所要求的目录,而且目录里面并没有目录
索引(DirectoryIndex, e.g. index.html) 存在,那麽服务器将
会传回这个目录格式化後的列表。
MultiViews
允许 MultiViews 内容协商。
SymLinksIfOwnerMatch
只有在目标文件或目录与符号链结的拥有者相同时服务器才会去
跟照符号链结。
如果多个选项可以应用到某个目录上,那麽最底下的指定会完成;选项
不会合并。例如:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Option Includes
</Directory>
这样只有 Includes 会设定到 /web/docs/spec 目录上。
3.20 PidFile 指令
语法: PidFile 文件名称
预设: PidFile logs/httpd.pid
用於: server config
状态: 核心
PidFile 这个指令设定服务器记录服务程序的程序号码所使用的文件。
如果文件名称不是以 / 开始那麽它会被假定是相对於 ServerRoot 的
目录。这个 PidFile 只使用在独立(standalone)模式。
能够送个信号给服务器通常会是有用的,可以关闭再重新打开错误记录
与传输记录,以及重新读取配置档。这是藉由传送 SIGHUP (kill -1)
信号到列在 PidFile 里的程序号码来达成的。
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 出现在 <Limit> 节段里,那麽它会限制所注明的存取
方式,否则它会限制所有的存取方式。例如:
AuthType Basic
AuthName somedomain
AuthUserFile /web/users
AuthGroupFile /web/group
Limit <GET POST>
require group admin
</Limit>
Require 必须藉由 AuthName 以及 AuthType 这些指令,以及配合像是
AuthUserFile 以及 AuthGroupFile 指令(用来定义使用者与群组)
以便正确运作。
3.23 ResourceConfig 指令
语法: ResourceConfig 文件名称
预设: ResourceConfig conf/srm.conf
用於: server config, virtual host
状态: 核心
此服务器读取 httpd.conf 文件之後将会继续读取这个文件以取得更多
指令。文件名称系相对於 ServerRoot 路径。此特色可以使用如下的方
式关闭:
ResourceConfig /dev/null
原本这个文件包含大部分指令,除了服务器配置及 <Directory> 节区
以外;事实上它现在可以包含任何可以用於服务器配置的指令。
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 要求而言没有意义的程序码。
建议你特别为执行这个服务器设立新的使用者以及群组。某些管理者使
用 nobody 但是这并非永远可行或合适的。
注意: 如果你以非 root 使用者的身分启动这个服务器,它将无法切换
到权限较低的使用者,并且取而代之的是它将会继续以原使用者身份来
执行。如果你真的是以 root 启动这个服务器,那麽这个父程序一般仍
然以 root 身分在执行。
安全: 不要把 User(or Group) 设为 root 除非你确实知道你在做什麽
以及会有怎麽样的危险。
3.31 <VirtualHost> 指令
语法: <VirtualHost 位址>...</VirtualHost>
用於: 服务器配置
位於: 核心部份
<VirtualHost> 以及 </VirtualHost> 用来把一组指令包装起来,这些
指令将只会应用到某个特定的虚拟主机上。任何可用於虚拟主机的指令
都可以使用。当服务器接收到某个特定主机上的文件请求的时候,它会
使用包装在 <VirtualHost> 节段里的配置指令。位址可以是
。虚拟主机的 IP 位址
。虚拟主机的 IP 位址的完整领域名称。
□例:
<VirtualHost host.foo.com>
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>
目前,每段 VirtualHost 必须符合服务器不同的 IP 位址,所以服务
机器必须配置成能够接收多个位址的 IP 封包。如果该机器并没有多个
网路界面,那麽这可以配合 ifconfig alias 指令来完成(如果你的作
业系统支援这个功能),或是配合像是 VIF(for SunOS(TM)4.1.x)一类
的核心修补档。
|
|