apache2.4的最终配置成果:httpd.conf
Listen 19010# Virtual hostsInclude conf/extra/httpd-vhosts.conf
httpd-vhosts.conf
# IP:Port,以端口号配置虚拟机<VirtualHost 127.0.0.1:19010> # 网站谬误时提醒的分割管理员邮箱(可不配置) ServerAdmin webmaster@dummy-host.example.com # 虚拟主机根目录 DocumentRoot "${SRVROOT}" # 服务器名称(可不配置) ServerName dummy-host.example.com # 服务器别名(可不配置) ServerAlias www.dummy-host.example.com # 谬误日志 ErrorLog "logs/dummy-host.example.com-error.log" # 拜访日志 CustomLog "logs/dummy-host.example.com-access.log" common # 拜访目录的配置,能够是其的一个子文件夹 <Directory "${SRVROOT}/public"> # 管制特定目录将启用哪些服务器个性 Options FollowSymLinks # 指明Apache服务器是否去找.htacess文件作为配置文件 AllowOverride All # 管制申请是否能够拜访 Require all granted </Directory></VirtualHost>
局部参数具体阐明:
Options FollowSymLinks
Options
指令是Apache配置文件中一个比拟常见也比拟重要的指令,Options
指令能够在Apache服务器外围配置(server config)、虚拟主机配置(virtual host)、特定目录配置(directory)以及.htaccess文件中应用。Options
指令的次要作用是管制特定目录将启用哪些服务器个性。
All
示意除 `MultiViews`之外的所有个性。这也是Options指令的 **默认设置**。
None
示意不启用任何的服务器个性。
FollowSymLinks
服务器容许在此目录中应用符号连贯。如果该配置选项位于 `<Location>`配置段中,将会被疏忽。
Indexes
如果输出的网址对应服务器上的一个文件目录,而此目录中又没有 `DirectoryIndex`指令(例如: `DirectoryIndex index.html index.php`),那么服务器会返回由 `mod_autoindex`模块生成的一个格式化后的目录列表,并列出该目录下的所有文件。
MultiViews
容许应用 `mod_negotiation`模块提供内容协商的"多器重图"。
SymLinksIfOwnerMatch
服务器仅在符号连贯与指标文件或目录的所有者具备雷同的用户ID时才应用它。
ExecCGI
容许应用 `mod_cgi`模块执行CGI脚本。
Includes
容许应用 `mod_include`模块提供的服务器端蕴含性能。
IncludesNOEXEC
容许服务器端蕴含,但禁用"#exec cmd"和"#exec cgi"。但仍能够从 `ScriptAlias`目录应用"#include virtual"虚构CGI脚本。
AllowOverride All
AllowOverride参数就是指明Apache服务器是否去找.htacess文件作为配置文件,如果设置为none,那么服务器将疏忽.htacess文件,如果设置为All,那么所有在.htaccess文件里有的指令都将被重写。对于AllowOverride,还能够对它指定如下一些能被重写的指令类型。
从安全性思考,根目录的AllowOverride属性个别都配置成不容许任何Override 。
None
网站 .htaccess 文件将被齐全疏忽。
All
所有具备 .htaccess 作用域的指令都容许呈现在 .htaccess 文件中。
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)。 个别 Apache 新装置 AllowOverride 默认为「None」。
个别都尽可能防止应用.htaccess文件,任何心愿放在.htaccess文件中的配置,都可放在主配置的<Directory>段中。防止应用的起因次要有:
性能问题
如果AllowOverride启用.htaccess文件,则Apache会在每个目录中查找.htaccess文件,因而启用.htaccess都会导致性能的降落。另外,对每一个申请,都须要读取一次.htaccess文件。还有,Apache必须在所有下级的目录中查找.htaccess文件,以使所有无效的指令都起作用(参见指令的失效)
平安问题
容许用户本人批改apache的配置,可能会导致某些意想不到的批改,如果给予用户较少的特权而不能满足其须要,则会带来额定的技术支持申请,所以必须明确地通知用户曾经给予他们的权限,阐明AllowOverride设置的值,并疏导他们参阅相应的阐明,免得日后生出许多麻烦。
Require all granted
在Apache2.2版本中,访问控制是基于客户端的主机名、IP地址以及客户端申请中的其余特色,应用Order(排序), Allow(容许), Deny(回绝),Satisfy(满足)指令来实现。
在Apache2.4版本中,应用mod_authz_host
这个新的模块,来实现访问控制,其余受权查看也以同样的形式来实现。旧的访问控制语句该当被新的受权认证机制所取代,即使Apache曾经提供了mod_access_compat
这一新模块来兼容旧语句。
用新办法取代旧语句实现雷同的访问控制示例:
1.所有申请都被回绝
Apache2.2 配置:
Order deny,allow #排序,先回绝后容许 Deny from all #回绝所有
Apache2.4 配置:
Require all denied #回绝所有
2.所有申请都被容许
Apache2.2 配置:
Order allow,deny #排序,先容许后回绝 Allow from all #容许所有
Apache2.4 配置:
Require all granted #容许所有
3.example.com所有申请都被容许,其余回绝
Apache2.2 配置:
Order Deny,Allow #排序,先回绝后容许 Deny from all #回绝所有 Allow from example.com #容许example.com
Apache2.4 配置:
Require host example.com #容许example.com
附:常见拜访控制指令
Require all granted #容许所有起源拜访 Require all denied #回绝所有起源拜访 Require expr expression #容许表达式为true时拜访 Require ip 10 172.1 192.168.2 #容许特定IP段拜访,多个段之前用空格隔开,每个段应用结尾几项示意 Require host example.com #只容许来自域名example.com的主机拜访