httpd2.4.9主配置文件参数详解

时间:2021-08-11 19:06:59

配置文件解析

本人安装的httpd2.4配置文件位于/etc/httpd24目录下,在该目录下最主要的配置文件是httpd.conf文件,还有一些位于extra目录下的附加配置文件。此外original目录中存有所有这些配置文件的副本。


下面是对主配置文件重点指定的具体描述。
SeverRoot指令

ServerRoot指令设置Apache软件的安装主目录

ServerRoot "/usr/local/apache1"

Listen指令

Listen指令设置服务器监听的IP以及端口号,默认监听服务器本机所有的IP地址的80端口。

语法格式为  Listen  IP: 端口

其中IP地址为可选项,默认监听所有IP,使用TCP协议。一个配置文件中可以多次使用Listen指令来开启多个端口。

Listen 80Listen 172.16.251.248:8080


LoadModule指令

Apache HTTP Server的特色之一就是她的功能多数是以模块方式加载的,但如果希望Apache动态加载模块,需要在编译Apache时通过--enable-so将mod_so以静态方式编译到Apache核心模块中,LoadModule指令的作用就是加载模块。

语法格式为:LoadModule 模块 模块文件名称,模块文件一般位于ServerRoot指定目录下modules目录中。

LoadModule filter_module modules/mod_filter.so#LoadModule substitute_module modules/mod_substitute.so#LoadModule sed_module modules/mod_sed.soLoadModule deflate_module modules/mod_deflate.so



ServerAdmin指令

当网站出现故障时,需要为客户提供一个可以帮助解决问题的邮件地址,ServerAdmin指令的作用就是提供这样的邮件地址。

ServerAdmin cw@linux.com


ServerName指令

ServerName指令设置服务器本机的主机名称以及端口,对于URL地址的重定向很重要。

ServerName localhost:80


DocumentRoot指令

该指令设置Web服务对客户端开放可见的文档根目录,也就是客户端访问网站的根路径

DocumentRoot "/usr/local/apache1/htdocs"


ErrorLog指令

ErrorLog定位服务器错误日志的位置,默认使用相对路径,为ServerRoot指定目录下的”logs/error_log”文件。

ErrorLog "logs/error_log"


LogFormat指令

设置错误日志的格式,Apache HTTP Server事先定义了很多格式字串 可以直接引用。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined


CustomLog指令

该指令设置客户端的访问日志文件名以及日志格式,默认为”logs/access_log”,语法格式为CustomLog 文件名 格式。

CustomLog "logs/access_log" combined


Include指令

Include指令允许Apache在主配置文件中加载其他的配置文件,该指令语法比较简单,Inclde指令后直接跟上其他附加配置文件路径即可。

Include /etc/httpd24/extra/httpd-info.conf


Options指令

为特定目录设置选项,语法格式为Options [+|-]选项 [[+|-]选项]。选项可以设置为None,代表不启用任何额外功能,也可以使用如下常用选项。

All:开启除MultiViews之外的所有选项。

ExecCGI:允许执行CGI脚本。

FollowSymlinks:允许目录下通过链接文件链接到目录外的文件或目录。

Indexes:如果与URL对应的目录下,没有DirectoryIndex指定的首页文档,则Apache将会把当前目录的所有文件索引出来。


Order指令

控制默认访问状态以及Allow与Deny次序,

如果使用Order deny,allow,则先检查拒绝,没有拒绝则默认允许。

如何使用Order allow,deny,则先检查允许,没有允许则默认拒绝
以下为具体案例:
Order deny,allow
Deny from all
先检查拒绝规则,再检查允许规则,默认为允许。这里Deny From all代表拒绝所有,所以最终结果为拒绝所有。


Order Allow,Deny
allow from All
先检查允许规则,再检查拒绝规则,allow from all代表允许所有,所以最终结果为允许所有。


Order Allow,Deny
allow from 192.168.0.1
先检查允许规则时允许192.168.0.1,其余为默认值,默认为拒绝所有,最终除192.168.0.1外拒绝所有。


Order Allow,Deny
allow from 192.168.0.1
Deny from All
先检查允许规则时允许192.168.0.1访问,但检查拒绝规则时为拒绝所有,而192.168.0.1也包含在all之中,当Allow与Deny有冲突时,以Order最后的规则覆盖其他的规则,本案例将使用Deny规则覆盖Allow规则,最终效果为拒绝所有人访问。


Order Deny,Allow
Deny from all
allow from 192.168.0.1
先检查拒绝规则,再检查允许规则,拒绝规则为拒绝所有,允许规则为允许192.168.0.1,拒绝与允许规则有冲突的部分本案例将采用Allow的规则,最终本案例可以实现仅允许192.168.0.1访问,其他任何主机均无法访问Apache服务。


IfModule容器

使用IfModule容器可以封装仅在条件满足时才会处理的指令,根据指定的模块是否加载决定条件是否满足,语法格式<IfModule [!] 模块>指令</IfModule>。

具体案例如下:
<IfModule unixd_module>
User daemon
Group daemon
</IfModule>
以上配置说明,仅在Apache加载了unixd_module模块后User daemon与Group daemon才会被Apache处理。


Directory容器

该容器内的指令仅应用于特定的文件系统目录、子目录以及目录下的内容,语法格式为<Directory directory-path>指令</Directory>。路径可以使用~匹配正则表达式。

具体案例如下:
<Directory “/usr/local/apche2/htdocs”>
Options Indexs FollowSymLinks
</Directory>


<Directory ~ “^/www/[0-9]{3}”>
AllowOverride None
</Directory>
以上案例中Opions Index FollowSymLins仅对/usr/local/apache2/htdocs目录有效,

AllowOverride None仅对所有/www目录下包含三个数字的子目录有效。


<DirectoryMatch>
DirectoryMatch类似于Directory,但可以直接使用正则表达式匹配,而无需像Directory一样使用~符号才可以匹配。