Apache服务器配置之:Options指令

请注意:本文内容仅适用于Apache2.4+版本

我们在《》一文中提到过网站配置文件example.com.conf中的参数配置:

<VirtualHost *:80>
    ServerName www.example.com    
    ServerAlias example.com    
    DocumentRoot /mnt/www/example.com/public_html    
    ErrorLog /mnt/www/example.com/error.log    
    CustomLog /mnt/www/example.com/requests.log combined    
    <Directory /mnt/www/example.com/public_html>    
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Options指令是Apache配置文件中一个比较常见也比较重要的指令,Options指令可以在Apache服务器核心配置(server config)、虚拟主机配置(virtual host)、特定目录配置(directory)以及.htaccess文件中使用。Options指令的主要作用是控制特定目录将启用哪些服务器特性。

Options指令的完整语法为:Options [+|-]option [[+|-]option] ...。简而言之,Options指令后可以附加指定多种服务器特性,特性选项之间以空格分隔。下面我们来看看Options指令后可以附加的特性选项的具体作用及含义(Apache配置中的内容均不区分大小写):

Indexes

如果输入的网址对应服务器上的一个文件目录,而此目录中又没有DirectoryIndex指令(例如:DirectoryIndex index.html index.php),那么服务器会返回由mod_autoindex模块生成的一个格式化后的目录列表,并列出该目录下的所有文件(如下图)。

如果你去掉Indexes会显示这样的结果:

FollowSymLinks

服务器允许在此目录中使用符号连接。

AllowOverride

这个指令就很重要了,应该经常有小伙伴发现服务器不支持rewrite,其实就是因为设置成了AllowOverride None,该参数的作用是配置Apache服务器是否允许.htacess文件作为配置文件,如果设置为None,网站目录下的.htacess文件将不会起任何作用,如果设置为All,那么所有在.htaccess文件中的重复参数会覆盖example.com.conf。

AllowOverride的可选参数:

  • AuthConfig 允许使用与认证授权相关的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。
  • FileInfo 允许使用控制文档类型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime中的 Add* 和 Remove* 指令等等)、控制文档元数据的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName)、mod_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule)和mod_actions中的Action指令。
  • Indexes 允许使用控制目录索引的指令(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, 等)。
  • Limit 允许使用控制主机访问的指令(Allow, Deny, Order)。
  • Options[=Option,...] 允许使用控制指定目录功能的指令(Options和XBitHack)。可以在等号后面附加一个逗号分隔的(无空格的)Options选项列表,用来控制允许Options指令使用哪些选项。

Require

这个参数是Apache 2.2的升级改进,旧版本的写法是:

Order deny,allow
Deny from all

2.4版本中Require的常用命令:

  • Require all granted #允许所有请求,没有这个设置外网是无法访问的
  • Require all denied #拒绝所有请求
  • Require host xxx.com #仅限于xxx.com域的请求
  • Require ip 192.168.1 192.168.2 #仅限于IP192.168.1、192.168.2的请求
  • Require local #仅限本地请求
  • Require not ip 192.168.0.1 #拒绝IP192.168.0.1的请求,要和Require all granted配合使用

Post Comment