配置Apache httpd.conf文件

Apache的配置指令分为两类:一类是核心指令,它们通常是由核心模块提供,这些执行必须写在httpd.conf中,否则Apache可能无法工作,另一类是由标准模块或第三方模块提供,如mod_dav模块提供的dav功能。

 

在Apache的所有模块中最重要的就是core_module、so_module、http_module以及mpm模块,除了so_module可以像其他模块一样可以关掉或禁用,其他都不行。

 

Apache的配置非常简单,最主要的配置文件就是httpd.conf,如需配置虚拟主机,则需要加载和修改相应的虚拟主机配置文件。httpd.conf中会引用其他配置文件。假设我们的Apache编译安装在/usr/local/apache,则在此路径的conf/extra目录中放的就是Apache所需要引用的配置,通常有dav的配置、虚拟主机的配置、ssl的配置等。

 

httpd.conf中的配置可分为3个部分:主服务器部分、容器部分,以及服务器扩展部分。

 

一、主服务器部分

1、ServerName指令

用于配置Apache默认主机名,值就是你的站点名称或是IP地址。推荐使用完整的IP地址。例如:

ServerName www.orache.com 或ServerName 192.168.171.133,如果你没有用此指令来指定Apache的默认主机名,则在用# ./apachectl start启动时会看到一行警告信息,系统提示找不到域名,因此只能用127.0.0.1作为服务器的默认地址,这当然只有本机能访问。如果使用了完整的站点名称,那么Apache会根据主机的host.conf文件的配置来决定是线程本地主机名列表文件/etc/hosts中查找与站点名对应的IP还是

向DNS查询站点名对应的IP。

 

2、ServerRoot指令

用于定义服务器所在的目录,这个路径通常是在编译时由--prefix=ServerRoot路径选项来指定。如果你用二进制包来安装,则ServerRoot位于/etc/apache2下。

也可以在启动Apache时利用-d参数来指定一个ServerRoot的未知,这种做法只是用来测试同一版本的Apache在多个环境下的配置。

 

3、DocumentRoot指令

也就是Apache所收到的URL请求的根目录,该路径只能用绝对路径,如果路径中有空格,还需要用引号。

 

4、ServerAdmin指令

用于定义当服务器出现错误后,用于向管理员发送通知的邮箱。

ServerAdmin [email protected]

 

5、ScriptAlias与Alias指令

它们功能类似,都是用于映射目录。只是ScriptAlias是将映射的目录识别为CGI脚本目录。而Alias则是只映射为一个普通的目录。ScriptAlias指定的那个目标目录中的文档被当作应用来看待,服务器会运行它们,而不是作为文档发送给客户端。Alias:将web路径映射进文件系统路径,用于访问那些不在Document Root下的内容。

 

6、User与Group指令

ps aux | grep httpd就可以查看到了

 

7、Listen指令

监听端口。范围值:0~65535,但其中0~1024是为系统服务所保留的。

 

8、LoadModule指令

用于加载模块或是目标文件

 

9、ErrorDocument指令

 有3种方法使用它,定义文本信息、使用脚本,指定一个页面。例如:

ErrorDocument 500 "unknown error"

ErrorDocument 404 "/srv/www/cgi-bin/missing_404.pl"

ErrorDocument 402 http://www.jonsk.com/info_402.html

 

10、Options指令

此指令决定在哪些目录中使用哪些服务器的特性

 

二、容器部分

1、<IfModule>容器

它作用于模块,它先判断模块是否载入,再决定是否进行处理。

<IfModule !mpm_netware_module>的意思是如果载入了mpm_netware_module模块则不执行容器内的指令。IfModule指令可以嵌套。

<IfModule dir_module>

    DirecoryIndex index.html

</IfModule>

 

2、<IfDefine>容器

<IfDefine Proxy>

    LoadModule proxy_module modules/libproxy.so

</IfDefine>

下面的启动命令定义了一个名字Proxy,可以在IfDefine容器中使用

# httpd -D Proxy

 

3、<Directory>与<DirectoryMatch>容器

<Directory>容器的作用就是让它所封装的指令在指定的目录及它的子目录中起作用,这个目录必须是一个

完整的路径,当然你也可以使用通配符 * ? [],但这3者都不能匹配/。

禁止对/srv/apache/html/目录的访问权限,请求被拒绝:

<Directory /srv/apache/html/>

Order Deny,Allow

Deny from All

</Directory>

下面的利用到了正则表达式:

<Directory ~ "^/srv/apache[0-9]{2}/html/">

Order Deny,Allow

Allow from All

</Directory>

 

<DirectoryMatch>与Directory作用类似,都是作用于目录,只不过<DirectoryMatch>用到正则表达式时,

不需要 ~ ,例如:

<DirectoryMatch "^/srv/apache[0-9]{2}/html/">

Order Deny,Allow

Allow from All

</DirectoryMatch>

 

4. <Files>与<FilesMatch>容器

匹配所有的以.ht文件结尾的文件并允许所有用于访问

<Files "^\.ht">

Order Deny,Allow

Allow from All

<Files>

 

5、<Location>与<LocationMatch>容器

它们是对URL进行访问控制

<Location /cgi>

............................

</Location>

还可以将URL请求映射到apche模块处理器上,例如,使用Apache自带的mod_status模块:

<Location /server-status>

SetHandler server-status

</Location>

 

三、服务器扩展部分

在Apache的默认配置文件夹中有一个extra目录,这个目录用来存放Apache其他模块的配置文件。

Include指令可以通过通配符来加载多个文件,而这个顺序则是按照字母顺序加载,如果指向一个目录,

则会按字母顺序加载这个目录下的所有文件,对于加载文件路径,可以使用绝对路径,也可以使用

相对于ServerRoot目录的相对路径,如:

Include /home/apache/conf/httpd-vhosts.conf

Include extra/httpd-vhosts.conf

 

 

猜你喜欢

转载自zsjg13.iteye.com/blog/2343075
今日推荐