# httpd -L
封装在段里面的指令只应用于服务器上限定的目录集,这个限定的工作由段来完成。
段有很多不同的类型,指定许多不同的方法来分割服务于Web服务器的内容:
1. Directory和DirectoryMatch
<Directory>段指定所封装的指令将要应用的目录和它的所有子目录,除非用另一条指令指定更深一层目录的应用参数。这里提供的目录需要全称。
写法如下:
<Directory /var/www/html>
AllowOverride None
</Directory>
<DirectoryMatch>段和Directory段功能几乎类似,不同的是它不是个精确的目录作为参数,此参数是个正则表达式。被封装的指令集应用于与这个表达式相匹配的所有目录。可允许用户用一个段指定多个目录共享相同的特性。
例如:
<DirectoryMatch /var/www/html/[aAbB].*>
AllowOverride All
</DirectoryMatch>
2. Files和FilesMatch
<Files>表示被封装的指令只能够应用在指定的文件上。可用通配符。“?”表示单字符匹配,“*”表示字符串的匹配。
例如:
<Files *.gif>
DefaultType image/gif
</Files>
<Files>也有一个同属的<FilesMatch>,它可以带正则表达式做参数。
例如:
若有几个CGI程序,其中的一个意图单独用于站点管理,那么可以用一条Files指令对这个程序的访问进行限制
<Files admin.cgi>
AuthName Admin
AuthType Basic
AuthUserFile /usr/local/apache2/passwords/admin.passwd
AuthGroupFile /usr/local/apache2/passwords/admin.groups
Require group siteadmins
</Files>
若文件名不怎么固定,但是系统文件的名字有些相似,可以用<FilesMatch>一条指令对它们全部限制访问
<FilesMatch "admin.{cgi|pl|exe}">
AuthName Admin
AuthType Basic
AuthUserFile /usr/local/apache2/passwords/admin.passwd
AuthGroupFile /usr/local/apache2/passwords/admin.groups
Require group siteadmins
</FilesMatch>
3. IfDefine
<IfDefine>段仅当定义了一个特殊的参数时会起作用。这个参数可以在服务器启动的时候用-D的命令进行赋值。
4. IfModule
把一个特定模块指令放进<IfModule>中可以保证这些指令在这个特定的模块已经成功加载的时候才被应用。这是获得配置文件的便利方法,而且不需要因为某个特定模块没有安装而改变整个系统的配置。这也是默认的Apache配置文件发布的方法,因此无论要选择什么模块编译进服务器,配置文件都仍然有效。
5. Limit和LimitWExcept
<Limit>和<LimitExcept>段限制请求方式。被封装的指令仅当服务器接到指定的HTTP请求方式时才会应用。
请求方式是指从Web服务器获得文件或资源的方法。通常用GET、POST、或HEAD方法,当然还有其他方法来表示。
<Limit>指令可以在基于一特定文档(或资源)如何被访问的基础上来限定此文档的访问
<LimitExcept>和<Limit>是相对的,用于对没有列出的请求方式进行访问限制。
6.Location和LocationMatch
当Apache接收到资源请求时,Apache在服务器上定位某个文件或某资源是需要一个过程的,一个<Location>用来定义某一非文件资源的URL映射。和其他的Match指令一样,<LocationMatch>会把一个URL正则表达式映射到具体的资源。
7. VirtualHost
当多个不同主机名的Web站点运行于同一个Web服务器时,这些Web站点被称为虚拟主机。
下面的命令使Apache加载特定的配置文件代替默认的配置文件,因此特定的配置文件内必须包含服务器的完整配置参数。
# /usr/local/apache2/bin/httpd -f /path/to/apache.conf
# apachectl restart Apache将会用默认的配置文件重启
# apachectl configtest 检查配置文件的语法是否正确
当服务器重启和配置文件加载的同时,Apache给用户提供一个选项,它可以把某一个文件包含进httpd.conf配置文件。这个功能可以用Include指令完成,如下所示:
Include conf/modperl.conf
Include /etc/apache.otherconf
如文件路径不以斜线开始,那路径将假设与ServerRoot相关联。
mod_vhost_alias允许用户用少量的指令配置数量众多的虚拟主机,而不需要为每个虚拟主机都写指令。
Options:开启功能
Options指令是开启或关闭站点不同部分功能的主要工具之一。它可以在主配置文件中用一个<VirtualHost>、<Directory>段或者在.htaccess文件里设置。在段中可以设置启动指定选项。
语法如下:
Options [+|-] 选项 [+|-] 选项
+表示打开该选项,-表示关闭该选项
Options +ExecCGI +Includes -FollowSymLinks
表示开启ExecCGI和Includes选项,关闭FollowSymLinks选项。
Options Indexes
默认情况下没写出的选项是关闭的,选项前不带+和-默认是打开
Options +FollowSymLinks 允许从目录中的符号链接指向的目录下下载隐藏文件,这会出现安全问题。对windows版的Apache无效。默认情况下,出现在Apache所提供目录中的符号链接都会忽略掉。
Options +SymLinksIfOwnerwatch Apache仅当被链接的目录的拥有者和创建链接的人是同一个用户时,才会遵循这个符号链接,才能访问到链接目录。
Options +Includes 开启文件里的SSI(Server-Side Includes,服务器端嵌入)功能。SSI使用户可以在HTML文件里嵌入大量命令,并且当这个页面被某个客户端请求时执行这些命令。SSI和CGI程序一样有同样的安全问题,它允许执行服务器上的隐藏命令。要防止这种危害,可以考虑用IncludesNOEXEC替代。
Options +IncludesNOEXEC 用于开启使用SSI许可,但同时禁止#exec命令的使用或者用#include命令引导一个CGI程序。
Options +Indexes 这个选项使那些没有index.html文件(或者任何由DirectoryIndex指令指定的文件)的目录能够产生自动索引。即用户访问这个目录时会列出目录文件列表
Options +MultiViews Multiviews选项开启内容协商功能。MultiViews是Apache的一项功能,它指出哪个文档最适合客户端,并把那个最适合的文档发送给客户端。
Options All 开启所有选项。MultiViews不能用All来开启,它必须显示指出才会生效。
Options None 关闭所有有效的选项。