apache虚拟主机配置

2次阅读

共计 3594 个字符,预计需要花费 9 分钟才能阅读完成。

apache2.4 的最终配置成果:
httpd.conf

Listen 19010

# Virtual hosts
Include 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 的主机拜访
正文完
 0