| 
 Apache服务器配置全攻略(五)  作者:王波/OSO   这里可以看到另外一个语句Limit,Limit语句就是用来针对具体的请求方法来设定访问控制的,其中可以使用GET、POST等各种服务器支持的请求方法做Limit的参数,来设定对不同请求方法的访问限制。一般可以打开对GET、POST、 HEAD三种请求方法,而屏蔽其他的请求方法,以增加安全性。Limit语句中,可以用Order 、Allow、Deny,Allow和Deny中可以使用匹配的方法针对域名和IP进行限制,只是对于域名是从后向前匹配,对于IP地址则从前向后匹配。 
 
    DirectoryIndex index.html 
    很多情况下,URL中并没有指定文档的名字,而只是给出了一个目录名。那么Apache服务器就自动返回这个目录下由DirectoryIndex定义的文件,当然可以指定多个文件名字,系统会这个目录下顺序搜索。当所有由DirectoryIndex指定的文件都不存在时,Apache服务器可以根据系统设置,生成这个目录下的所有文件列表,提供用户选择。此时该目录的访问控制选项中的Indexes选项(Options Indexes )必须打开,以使得服务器能够生成目录列表,否则Apache将拒绝访问。 
 
    AccessFileName .htaccess 
    AccessFileName定义每个目录下的访问控制文件的文件名,缺省为.htaccess,可以通过更改这个文件,来改变不同目录的访问控制限制。 
 
  Order allow,deny 
  Deny from all 
    除了可以针对目录进行访问控制之外,还可以根据文件来设置访问控制,这 
  就是File语句的任务。使用File 语句,不管文件处于哪个目录,只要名字匹配, 就必须接受相应的访问控制。这个语句对于系统安全比较重要,例如上例将屏蔽所有的使用者不能访问.htaccess文件,这样就避免.htaccess中的关键安全信息不至于被客户获取。 
 
    #CacheNegotiatedDocs 
    缺省情况下如果代理服务器和Apache服务器协商是否缓存其网页,Apache给 
  予否定的回答,不希望自己的网页被代理服务器缓存。然而这样就不能有效的利用代理服务器的优势,因此可以设置CacheNegotiatieDocs 选项, 使得代理服务器可以对网页进行缓存。然而即使不设置这个选项,有的代理服务器(或通过调整设置)也能对网页进行缓存。 
 
    UseCanonicalName On 
    打开这个UseCanonicalName是Web服务器的标准做法,因为客户发送的大部分请求都是对本服务器的引用,这样服务器就能使用ServerName和Port选项的设置内容构建完整的URL,并回应客户,使浏览器能得到规范的URL。如果将这个参数设置为Off,那么Apache将使用从客户请求中获得服务器的名字和端口值(支持HTTP 1.1的客户的请求中将会有这些信息),重新构建URL。 
 
    TypesConfig /usr/local/apache/etc/mime.types 
    TypeConfig用于设置保存有不同的MIME类型数据的文件名,在Linux下缺省设置为/usr/local/apache/etc/mime.types。 
 
    DefaultType text/plain 
    如果Web服务器不能决定一个文档的缺省类型,这通常表示文档使用了非标准的后缀,那么服务器就使用 DefaultType定义的MIME类型将文档发送给客户浏览器。这里的设置为text/plain,这样设置的问题是,如果服务器不能判断出文档的MIME,那么大部分情况下这个文档为一个二进制文档,但使用 text/plain格式发送回去,浏览器将在内部打开它而不会提示保存。因此建议将这个设置更改为 
  application/octet-stream,这样浏览器将提示用户进行保存。 
 
  MIMEMagicFile /usr/local/apache/etc/magic 
    除了从文件的后缀出发来判断文件的MIME类型之外,Apache还可以进一步分 
  析文件的一些特征,来判断文件的真实MIME类型。这个功能是由mod_mime_magic 模块实现的,它需要一个记录各种MIME类型特征的文件,以进行分析判断。上面的设置是一个条件语句,如果载入了这个模块,就必须指定相应的标志文件magic的位置。  Apache服务器配置全攻略(六)  作者:王波/OSO   通常连接时,服务器仅仅可以得到客户机的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与服务器文件系统中的真实位置进行直接映射,一般的 
  文档将在DocumentRoot 中进行查询,然而使用Alias定义的路径将直接映射到相 
  应目录下,而不再到DocumentRoot 下面进行查询。因此Alias可以用来映射一些 
  公用文件的路径,例如保存了各种常用图标的icons路径。这样使得除了使用符号连接之外,文档根目录(DocumentRoot)外的目录也可以通过使用了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" .gz 
  #AddDescription "tar archive" .tar 
  #AddDescription "GZIP compressed tar archive" .tgz 
  ReadmeName README 
  HeaderName HEADER 
  IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t 
 
  当一个HTTP请求的URL为一个目录的时候,服务器返回这个目录中的索引文件。但如果一个目录中不存在缺省的索引文件,并且该服务器又许可显示目录文件列表的时候,就会显示出这个目录中的文件列表,为了使得这个文件列表能具有可理解性,而不仅仅是一个简单的列表,就需要前面的这些设置参数。   |