红联Linux门户
Linux帮助

Apache服务器配置全攻略(3)

发布时间:2005-06-19 00:13:50来源:红联作者:zz123
通常连接时,服务器仅仅可以得到客户机的IP地址,如果要想获得客户机的

主机名,以进行日志记录和提供给 CGI程序使用,就需要使用这个HostnameLookups 选项,将其设置为On打开DNS反查功能。但是这将使服务器对每次客户请求都进行DNS查询,增加了系统开销,使得反应变慢,因此缺省设置为使用Off关闭此选项。关闭选项之后,服务器就不会获得客户机的主机名,而只能使用IP地址来记录客户。


ErrorLog /var/log/httpd-error.log

LogLevel warn

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent} "" combined

LogFormat "%h %l %u %t "%r" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

#CustomLog /var/log/httpd-access.log common

#CustomLog /var/log/httpd-referer.log referer

#CustomLog /var/log/httpd-agent.log agent

CustomLog /var/log/httpd-access.log combined


  这里定义了系统日志的形式,对于服务器错误记录, 由ErrorLog、 LogLevel 来定义不同的错误日志文件及其记录内容。

  对于系统的访问日志,缺省使用CustomLog参数定义日志的位置,缺省使用 combined 参数指定将所有的访问日志放在一个文件中,然而也可以将不同种类的访问日志放在不同的日志记录文件中,这是通过在 CustomLog中指定不同的记录类型来完成的。common表示普通的对单页面请求访问记录,referer表示每个页面的引用记录,可以看出一个页面中包含的请求数,agent表示对客户机的类型记录,显然可以将现有的combined 定义的设置行注释掉,并使用common、referer和agent作为CustomLog的参数,来为不同种类的日志分别指定日志记录文件。

  显然,LogFormat是用于定义不同类型的日志进行记录时使用的格式, 这里

使用了以%开头的宏定义,以记录不同的内容。

  如果这些参数指定的文件使用的是相对路径,那么就是相对于ServerRoot的

路径。


  ServerSignature On

  一些情况下,例如当客户请求的网页并不存在时,服务器将产生错误文档,

缺省情况下由于打开了 ServerSignature选项,错误文档的最后一行将包含服务器的名字、Apache的版本等信息。有的管理员更倾向于不对外显示这些信息,就

可以将这个参数设置为Off,或者设置为Email,最后一行将替换为对 ServerAdmin 的Email提示。


Alias /icons/ "/www/icons/"

Options Indexes MultiViews

AllowOverride None

Order allow,deny

Allow from all


  Alias参数用于将URL与服务器文件系统中的真实位置进行直接映射,一般的

文档将在document.oot 中进行查询,然而使用Alias定义的路径将直接映射到相

应目录下,而不再到document.oot 下面进行查询。因此Alias可以用来映射一些

公用文件的路径,例如保存了各种常用图标的icons路径。这样使得除了使用符号连接之外,文档根目录(document.oot)外的目录也可以通过使用了Alias映射,提供给浏览器访问。

  定义好映射的路径之后,应该需要使用Directory语句设置访问限制。


scriptAlias /cgi-bin/ "/www/cgi-bin/"

AllowOverride None

Options None

Order allow,deny

Allow from all

  scriptAlias也是用于URL路径的映射,但与Alias的不同在于,scriptAlias 是用于映射CGI程序的路径,这个路径下的文件都被定义为CGI程序,通过执行它们来获得结果,而非由服务器直接返回其内容。缺省情况下CGI程序使用cgi-bin目录作为虚拟路径。


  # Redirect old-URI new-URL

  Redirect参数是用来重写URL的,当浏览器访问服务器上的一个已经不存在的资源的时候,服务器返回给浏览器新的URL,告诉浏览器从该URL中获取资源。这主要用于原来存在于服务器上的文档,改变了位置之后,而又希望能使用老URL能访问到,以保持与以前的URL兼容。


IndexOptions FancyIndexing

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

AddIconByType (TXT,/icons/text.gif) text/*

AddIconByType (IMG,/icons/image2.gif) image/*

AddIconByType (SND,/icons/sound2.gif) audio/*

AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe

AddIcon /icons/binhex.gif .hqx

AddIcon /icons/tar.gif .tar

AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv

AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip

AddIcon /icons/a.gif .ps .ai .eps

AddIcon /icons/layout.gif .html .shtml .htm .pdf

AddIcon /icons/text.gif .txt

AddIcon /icons/c.gif .c

AddIcon /icons/p.gif .pl .py

AddIcon /icons/f.gif .for

AddIcon /icons/dvi.gif .dvi

AddIcon /icons/uuencoded.gif .uu

AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl

AddIcon /icons/tex.gif .tex

AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..

AddIcon /icons/hand.right.gif README

AddIcon /icons/folder.gif ^^DIRECTORY^^

AddIcon /icons/blank.gif ^^BLANKICON^^

DefaultIcon /icons/unknown.gif

#AddDescription "GZIP compressed document.quot; .gz

#AddDescription "tar archive" .tar

#AddDescription "GZIP compressed tar archive" .tgz

ReadmeName README

HeaderName HEADER

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t


当一个HTTP请求的URL为一个目录的时候,服务器返回这个目录中的索引文件。但如果一个目录中不存在缺省的索引文件,并且该服务器又许可显示目录文件列表的时候,就会显示出这个目录中的文件列表,为了使得这个文件列表能具有可理解性,而不仅仅是一个简单的列表,就需要前面的这些设置参数。
如果使用了IndexOptions FancyIndexing选项,可以让服务器产生的目录列

表中针对各种不同类型的文档引用各种图标。而哪种文件使用哪种图标,则使用

下面的 AddIconByEncoding、AddIconByType以及AddIcon来定义,分别依据MIME 的编码、类型以及文件的后缀来判断使用何种图标。如果不能确定文档使用的图标,就使用 DefaultIcon定义的缺省图标。

  同样,使用AddDescription可以为不同类型的文档加入不同的描述。并且,

服务器还在目录下,查询使用ReadmeName和HeaderName定义的文件(自动加上 .

html后缀,如果没有发现,再使用.txt后缀进行搜索),如果发现了这些文件,

就在文件列表之前首先显示这些文件的内容,以使得普通目录列表具备更大的可

理解性。

  IndexIgnore让服务器在列出文件列表时忽略相应的文件, 这里使用模式配

置的方式定义文件名。


AddEncoding x-compress Z

AddEncoding x-gzip gz

  AddEncoding用于告诉一些使用压缩的MIME类型,这样可以让浏览器进行解压缩操作。


AddLanguage en .en

AddLanguage fr .fr

AddLanguage de .de

AddLanguage da .da

AddLanguage el .el

AddLanguage it .it

LanguagePriority en fr de


  一个HTML文档可以同时具备多个语言的版本,如对于file1.html文档可以具

备file1.html.en、file1.html.fr 等不同的版本,每个语言后缀必须使用 AddLanguage进行定义。这样服务器可以针对不同国家的客户,通过与浏览器进行协商,发送不同的语言版本。而LanguagePriority 定义不同语言的优先级,以便在浏览器没有特殊要求时,按照顺序使用不同的语言版本回应对file1.html 的请求。

这个国际化的能力实际的应用并不多。

#AddType application/x-httpd-php .phtml

#AddType application/x-httpd-php-source .phps

 AddType参数可以为特定后缀的文件指定MIME类型,这里的设置将覆盖 mime.types中的设置。


  #AddHandler cgi-script .cgi

  AddHandler是用于指定非静态的处理类型,用于定义文档为一个非静态的文

档类型,需要进行处理,再向浏览器返回处理结果。例如上面注释中的设置是将以.cgi结尾的文件设置为cgi-script类型,那么服务器将启动这个CGI程序以进行处理。如果需要在前面Aliasscript定义的路径之外执行CGI程序,就需要使用这个参数进行设置,此后以.cgi结尾的文件将被当作CGI程序执行。


  在配置文件、这个目录中的.htaccess以及其上级目录的.htaccess中必须允许执行CGI程序,这需要通过Options ExecCGI参数设定。


#AddType text/html .shtml

#AddHandler server-parsed .shtml

  另外一种动态进行处理的类型为server-parsed,由服务器自身预先分析网页内的标记,将标记更改为正确的HTML标识。由于server-parsed需要对text/html 类型的文档进行处理,因此首先定义了对应的.shtml为text/html类型。

  然而要支持SSI,还要首先要在配置文件(或.htaccess)中使用Options Includes允许该目录下的文档可以为SSI类型,或使用Options IncludesNOExec让执行普通的SSI标志,但不执行其中引用的外部程序。


  另一种指定server-parsed类型的方式为使用XBitBack设置选项,如果将 XBitHack设置为On,服务器将检查所有text/html类型的文档(包括.html后缀的文档),如果发现文件属性具备执行位 “x",则服务器就认为它是服务器分析文档,需要服务器进行处理。推荐使用AddHandler进行设置,而将XBitBack 设置为Off,因为使用XBitBack将对所有的HTML文档都执行额外的检查,降低了效率。


#AddHandler send-as-is asis

#AddHandler imap-file map

#AddHandler type-map var

上面被注释的AddHandler用于支持Apache服务器的asis、map和var处理能力




# Action media/type /cgi-script/location

# Action handler-name /cgi-script/location

 因为Apache内部提供的处理功能有限,因此可以使用Action为服务器定义外

部程序作为可处理的动态文档类型,这些外部程序与标准CGI程序相同,都是对输入的数据处理之后,再输出不同MIME类型的结果。例如要定义一个对特殊后缀wri都先执行wri2txt进行处理操作,再返回结果的操作,可以使用:


Action windows-writer /bin/wri2txt

AddHandler windows-writer wri

 更进一步,可以直接使用Action定义对某个MIME类型预先进行处理操作,这

需要例子中第一种格式的Action 参数设置方式。这样设置方式就不再需要额外的AddHandler用来将处理操作与文件后缀联系起来,而是使用Action直接处理MIME类型的文件。但如果文档后缀没有正式的MIME类型,还需要先定义一个MIME类型。


#MetaDir .web

#MetaSuffix .meta

 Meta信息是在文档发送给客户之前,预先发送给客户浏览器一些数据,因此

浏览器可以通过HEAD请求来访问这些Meta信息而不必真正通过GET来返回全部文档数据。服务器通常发送给浏览器的是一些标准的HTTP头信息,如果要想增加额外的信息,就需要使用MetaDir来定义Meta数据存放的目录, 而MetaS uffix用于指定包含Meta数据的文件后缀。


#Errordocument.nbsp500 "The server made a boo boo.

#Errordocument.nbsp404 /missing.html

#Errordocument.nbsp404 /cgi-bin/missing_handler.pl

#Errordocument.nbsp402

http://some.other_server.com/subscription_info.html

  如果客户请求的网页不存在,或者没有访问权限等情况发生时,服务器将产

生一个错误代码,同时也将回应客户浏览器一个标识错误的网页。

Errordocument.用于设置当出现哪个错误时应该回应客户浏览器那些内容,Errordocument.第一个参数为错误的序号,第二个参数为回应的数据,可以为简单的文本,本地网页,本地CGI程序,以及远程主机上的网页。


BrowserMatch "Mozilla/2" nokeepalive

BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0

BrowserMatch "RealPlayer 4.0" force-response-1.0

BrowserMatch "Java/1.0" force-response-1.0

BrowserMatch "JDK/1.0" force-response-1.0

 BrowserMatch命令为特定的客户程序,设置特殊的参数,以保证对老版本浏

览器的兼容性,并支持新浏览器的新特性。


#

# SetHandler server-status

# Order deny,allow

# Deny from all

# Allow from .your_domain.com

#

#

# SetHandler server-info

# Order deny,allow

# Deny from all

# Allow from .your_domain.com

#

#

# Deny from all

# Errordocument.nbsp403 http://phf.apache.org/phf_abuse_log.cgi
文章评论

共有 4 条评论

  1. wjxxd 于 2007-04-24 20:52:13发表:

    努力学习中

  2. wuvco 于 2005-10-12 00:18:12发表:

    学习了

  3. 晴 于 2005-09-18 00:10:30发表:

    学习了

  4. thej 于 2005-07-24 00:15:16发表:

    分节讲得还可以啊