常用配置指令说明
- ServerRoot:服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录。默认为安装目录,不需更改。
语法:ServerRoot directory-path
如: ServerRoot “/usr/local/apache-2.2.6”
注意,此指令中的路径最后不要加 / 。
- Listen:指定服务器监听的IP和端口。默认情况下Apache会在所有IP地址上监听。Listen是Apache2.0以后版本必须设置的指令,如果在配置文件中找不到这个指令,服务器将
无法启动。
语法:Listen [IP-address:]portnumber [protocol]
Listen指令指定服务器在那个端口或地址和端口的组合上监听接入请求。如果只指定一个端口,服务器将在所有地址上监听该端口。如果指定了地址和端口的组合,服务器将在指
定地址的指定端口上监听。可选的protocol参数在大多数情况下并不需要,若未指定该参数,则将为443端口使用默认的https 协议,为其它端口使用http协议。
使用多个Listen指令可以指定多个不同的监听端口和/或地址端口组合。
默认为:Listen 80
如果让服务器接受80和8080端口上请求,可以这样设置:
Listen 80
Listen 8080
如果让服务器在两个确定的地址端口组合上接受请求,可以这样设置:
Listen 192.168.2.1:80
Listen 192.168.2.2:8080
如果使用IPV6地址,必须用方括号把IPV6地址括起来:
Listen [2001:db8::a00:20ff:fea7:ccea]:80
- LoadModule:加载特定的DSO模块。Apache默认将已编译的DSO模块存放于4.1目录结构小节中所示的动态加载模块目录中。
语法:LoadModule module filename
如:LoadModule rewrite_module modules/mod_rewrite.so
如果filename使用相对路径,则路径是相对于ServerRoot所指示的相对路径。
Apache配置文件默认加载所有已编译的DSO模块,笔者建议只加载如下模块:authn_file、authn_default、 authz_host、authz_user、authz_default、auth_basic、dir、alias
、filter、speling、 log_config、env、vhost_alias、setenvif、mime、negotiation、rewrite、deflate、 expires、headers、cache、file-cache、disk-cache、mem-cache
。
- User:设置实际提供服务的子进程的用户。为了使用这个指令,服务器必须以root身份启动和初始化。如果你以非root身份启动服务器,子进程将不能够切换至非特权用户,并
继续以启动服务器的原始用户身份运行。如果确实以root用户启动了服务器,那么父进程将仍然以root身份运行。
用于运行子进程的用户必须是一个没有特权的用户,这样才能保证子进程无权访问那些不想为外界所知的文件,同样的,该用户亦需没有执行那些不应当被外界执行的程序的权限
。强烈建议专门为Apache子进程建立一个单独的用户和组。一些管理员使用nobody用户,但是这并不能总是符合要求,因为可能有其他程序也在使用这个用户。
例:User daemon
- Group:设置提供服务的Apache子进程运行时的用户组。为了使用这个指令,Apache必须以root初始化启动,否则在切换用户组时会失败,并继续以初始化启动时的用户组运行
。
例:Group daemon
- ServerAdmin:设置在所有返回给客户端的错误信息中包含的管理员邮件地址。
语法:ServerAdmin email-address|URL
如果httpd不能将提供的参数识别为URL,它就会假定它是一个email-address ,并在超连接中用在mailto:后面。推荐使用一个Email地址,因为许多CGI脚本是这样认为的。如果你
确实想使用URL,一定要保证指向一个你能够控制的服务器,否则用户将无法确保一定可以和你取得联系。
- ServerName:设置服务器用于辨识自己的主机名和端口号。
语法:ServerName [scheme://]fully-qualified-domain-name[:port]
可选的’scheme://'前缀仅在2.2.3以后的版本中可用,用于在代理之后或离线设备上也能正确的检测规范化的服务器URL。
当没有指定ServerName时,服务器会尝试对IP地址进行反向查询来推断主机名。如果在ServerName中没有指定端口号,服务器会使用接受请求的那个端口。
为了加强可靠性和可预测性,建议使用ServerName显式的指定一个主机名和端口号。
如果使用的是基于域名的虚拟主机,在段中的ServerName将是为了匹配这个虚拟主机,在"Host:"请求头中必须出现的主机名。
- DocumentRoot:设置Web文档根目录。
语法:DocumentRoot directory-path
在没有使用类似Alias这样的指令的情况下,服务器会将请求中的URL附加到DocumentRoot后面以构成指向文档的路径。
如果directory-path不是绝对路径,则被假定为是相对于ServerRoot的路径。
指定DocumentRoot时不应包括最后的"/"。