httpd配置文件详解

httpd的配置文件/etc/httpd/conf/httpd.conf

在完成安装httpd软件之后,就会生成httpd的配置文件,这个文件就是/etc/httpd/conf/httpd.conf

在这个文件中,主要分成3部分组成。

### Section 1: Global Environment

第一部分表示全局环境配置段

### Section 2: 'Main' server configuration

第二部分表示主服务配置段

### Section 3: Virtual Hosts

第三部分表示虚拟主机配置段

在配置文件中,以#开头的行都表示注释信息


/etc/httpd/conf/httpd.conf的主要内容是:

ServerTokens OS  

#在响应报文的header显示的信息,OS表示Apache软件版本号。

ServerRoot "/etc/httpd"  

#httpd工作进程(或者子进程)的根目录。

PidFile run/httpd.pid   

#httpd进程的pid文件

Timeout 120   

#接受和发送前的等待时间

KeepAlive Off  

#是否启用长连接,on表示启用,off表示关闭。

MaxKeepAliveRequests 100  

#表示长连接允许的最大请求量,超过此请求数时,长连接也会断开。

KeepAliveTimeout 15   

#表示等待下一个请求的超时时间,如果在该时间内没有发起下一个请求,则断开长连接。

 

##prefork处理请求模型的相关属性

<IfModule prefork.c>    #如果prefork.c这个模块存在,则下面的属性就生效。且MPM机制为prefork

StartServers       8        #启动服务时生成的工作进程数(属主为root的进程为主进程)

MinSpareServers    5        #保留最小的空闲进程数

MaxSpareServers   20        #保留最大的空闲进程数

ServerLimit      256        #最大的活动进程数

MaxClients       256        #允许同一时刻最大请求数,即最大并发数。此值要小于等于ServerLimit的值。

MaxRequestsPerChild  4000    #每一个进程在生命周期内允许服务的最大请求数

</IfModule>              

 

##worker模型处理机制

<IfModule worker.c>    #如果worker.c模块存在的话,则下面的属性就生效,其MPM机制为worker

StartServers         2        #服务启动时生成的工作进程数

MaxClients         150        #允许同一时刻的最大请求数,即最大并发数

MinSpareThreads     25        #保留最少的线程数

MaxSpareThreads     75        #保留最大的线程数

ThreadsPerChild     25        #每一个进程生成多少个线程

MaxRequestsPerChild  0        #每一个进程可以服务的最大请求数,0表示无限制

</IfModule>

 

#Listen 12.34.56.78:80        

#只监听某一个主机的请求,可以监听多个主机的80端口

Listen 80                    

#监听的端口号,没有加ip,则监听系统上所有ip的80端口。

##

Include conf.d/*.conf    

#httpd的配置文件还包含这些文件conf.d/*.conf。

User apache            

Group apache

#httpd工作进程的属主和属组。

##

ServerAdmin root@localhost    

#服务器管理员的邮箱地址,当有问题时,apache会发送邮件给管理员。

ServerName www.example.com:80  

#设置服务器的主机名,如果这一行不启用的话,那么在执行service httpd {restart|start}时,系统会反解本地ip,是否有对应的主机名;如果有,则将解析出来的主机名当做服务器的主机名;如果没有,可能会出现报错。解决办法就是在/etc/hosts文件这添加一行本地ip到localhost的映射关系即可。

##

DocumentRoot "/var/www/html"  

#文档根目录,默认网页都是存放在这个目录下的。

ErrorLog logs/error_log   

#httpd的错误日志文件,这里使用的是相对路径(相对于/etc/httpd来说的),所以完整路径是/etc/httpd/logs/error_log。

LogLevel warn             

#定义日志级别,日志级别为warn。

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

LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

##这里定义的是日志文件记录信息的几种格式,combined等字样为格式名称。

            %h:表示Remote host,远程主机ip(客户端ip)

            %l:表示Remote logname,如果没有,则显示"-"

            %u:表示Remote User,认证时的用户名,如果没有,也显示为"-"

            %t:接受请求的时间

            %r:请求报文的起始行

            %>s:最近一次返回的响应状态码

            %b:响应报文的header大小,单位为字节

            %{header_name}i:记录请求报文首部的内容(即value)

CustomLog logs/access_log combined  

#定义访日志文件,这里使用的是相对路径,且格式为上面的combined格式。


Alias /icons/ "/var/www/icons/"  

#定义路径别名。


##定义容器属性

<Directory "/var/www/icons">

    Options Indexes MultiViews

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

##这里定义的是一个容器,使用<Directory><Directory/>来包含进来,里面都是对这个目录“/var/www/icons”的属性定义

        options的值有:    

            none:所有的都不启用

            Index:当主页面不存在时,将目录中的文件以列表的形式显示出来。比较危险。

            FollowSynLinks:允许访问符号链接指向的源文件

            Includes:允许使用mod_include执行服务器端包含(SSI)

            ExecCGI:允许使用mod_cgi模块执行CGI脚本

            IncludesNOEXEC:允许执行服务器端包含,但是不允许执行脚本

            MultiViews:允许使用mod_negotiation模块实现内容协商

            SymLinksIfOwnerMatch:在链接文件属主属组与原始文件的属主属组相同时,允许跟随符号连接所指向的原始文件

            ALL:支持所有选项

        AllowOverride:none表示启用下面的指令(即启用基于ip的访问控制)。

        Order:定义主机的访问功能,allow表示允许,deny表示拒绝,处在这一行的最后单词(allow或者deny表示默认行为)。

        Order allow,deny  这条语句的意思如下

                      a、默认动作为deny。

                       b、仅被allow匹配的表示允许;仅被deny匹配的表示拒绝。

                       c、即没被allow匹配的,也没被deny匹配的,则执行默认动作,即被deny。

                       d、即被allow匹配的,也被deny匹配的,则匹配最后一个控制,即被deny。

         Order deny,allow 这条语句的意思如下

                        a、默认动作为allow

                        b、仅被allow匹配的表示允许;仅被deny匹配的表示拒绝。

                        c、即没被allow匹配的,也没被deny匹配的,则执行默认动作,即被allow。

                        d、即被allow匹配的,也被deny匹配的,则匹配最后一个控制,即被allow。

                        

        Allow from all:表示允许所有的。在这里all表示所有的ip或者主机地址。

        deny from all:表示拒绝所有的。在这里all表示所有的ip或者主机地址。

            对于地址的表示方式,可以有以下几种:

            1、IP,如192.168.108.15

            2、network/netmask,如192.168.108.0/24,192.168.108.0/255.255.255.0

            3、Hostname,例如:www.baidu.com

            4、Domainname,例如baidu.com

            5、partial IP ,例如172.16,系统会自动补成172.16.0.0/16


ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"  

#定义脚本路径别名。

DirectoryIndex index.html index.html.var  

#定义默认主页面。

UserDir disable  

#定义是否允许访问某个用户家目录下的网页,访问时apache用户对该家目录要有x的权限。disable表示禁用此功能。

LoadModule auth_basic_module modules/mod_auth_basic.so

##加载DSO模块,前面为模块名称,后面为模块路径。

AccessFileName .htaccess   

#只有.htaccess中定义的用户才可以访问服务器。

NameVirtualHost *:80   

#表示是否启用基于域名的虚拟主机。

AddDefaultCharset

#指定默认字符集

以上就是httpd的配置文件中比较常见的参数,关于更多的参数,如果有需要,可以参考apache的官网手册查看http://httpd.apache.org/docs/2.2/mod/mod_dir.html#directoryindex