apache常用配置

配置文件内容

1
2
3
4
5
6
7
8
9
10
11
12
#apache服务根目录
ServerRoot "/opt/apache"
#服务管理员
ServerAdmin you@example.com
#监听端口
Listen 80
#默认首页
DirectoryIndex index.php
#加载php模块
LoadModule php5_module modules/libphp5.so
#解析php
AddType application/x-httpd-php .php

目录权限参数

1
2
3
4
5
6
7
8
DocumentRoot "/opt/apache/htdocs"   #WEB文件根目录
<Directory "/opt/apache/htdocs">
# 官方文档链接 http://httpd.apache.org/docs/2.2/mod/core.html
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all #允许所有请求
</Directory>

AllowOverride参数详解

  • none 不允许.htaccess使用任何指令
  • AuthConfig 允许使用所有的权限指令,包括 AuthDBMGroupFile AuthDBMUserFile AuthGroupFile AuthName AuthTypeAuthUserFile 和 Require
  • FileInfo 允许使用文件控制类型的指令。包括 AddEncoding AddLanguage AddType DEfaultType ErrorDocument LanguagePriority
  • Indexes 允许使用目录控制类型的指令。包括 AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon DirectoryIndex FancyIndexing HeaderName IndexIgnore IndexOptions ReadmeName
  • Limit 允许使用权限控制指令。包括Allow Deny和Order
  • Options 允许使用控制目录特征的指令,包括Options 和XBitHack

Options参数详解

  • All 表示除MultiViews之外的所有特性。这也是Options指令的默认设置。
  • None 表示不启用任何的服务器特性。
  • FollowSymLinks 服务器允许在此目录中使用符号连接。如果该配置选项位于配置段中,将会被忽略。
  • Indexes 如果输入的网址对应服务器上的一个文件目录,而此目录中又没有DirectoryIndex指令
  • MultiViews 允许使用mod_negotiation模块提供内容协商的”多重视图”。如果客户端请求的路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件。
  • SymLinksIfOwnerMatch 服务器仅在符号连接与目标文件或目录的所有者具有相同的用户ID时才使用它。只有当符号连接和符号连接指向的目标文件或目录的所有者是同一用户时,才会使用符号连接。
  • ExecCGI 允许使用mod_cgi模块执行CGI脚本。
  • Includes 允许使用mod_include模块提供的服务器端包含功能
  • IncludesNOEXEC 允许服务器端包含,但禁用”#exec cmd”和”#exec cgi”。但仍可以从ScriptAlias目录使用”#include virtual”虚拟CGI脚本。

日志配置参数

1
2
3
4
5
6
7
8
9
10
11
ErrorLog "logs/error_log"
LogLevel warn #错误日志记录等级

<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common #自定义日志 名为common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" common #日志路径 使用名为common的自定义格式
</IfModule>

虚拟主机参数

基于域名的虚拟主机

1
2
3
4
5
6
7
8
9
10
11
<VirtualHost *:80>
DocumentRoot /web1
ServerName web1.com
ErrorLog /app/apache/logs/error_log
CustomLog /app/apache/logs/access_log combined
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /web2
ServerName web2.com
</VirtualHost>

基于IP的虚拟主机

1
2
3
4
5
6
7
8
9
<VirtualHost 210.20.30.40>
DocumentRoot /web1
ServerName web1.com
</VirtualHost>

<VirtualHost 210.20.30.50>
DocumentRoot web2
ServerName web2.com
</VirtualHost>

基于端口的虚拟主机

1
2
3
4
5
6
7
8
9
10
11
12
Listen 172.20.30.40:80
Listen 172.20.30.40:8080

<VirtualHost 172.20.30.40:80>
DocumentRoot /web1
ServerName web1.com
</VirtualHost>

<VirtualHost 172.20.30.40:8080>
DocumentRoot /web2
ServerName web2.com
</VirtualHost>