Apache服务的搭建与配置

  • Apache服务的搭建与配置已关闭评论
  • 167 次浏览
  • A+
所属分类:linux技术
摘要

一、YUM安装Apache服务的搭建与配置  1、关闭selinux    ①修改selinux的配置文件

一、YUM安装Apache服务的搭建与配置

  1、关闭selinux

    ①修改selinux的配置文件

      [root@localhost ~]#  vim  /etc/selinux/config

        SELINUX=disabled

    ②关闭selinux

      [root@localhost ~]#  setenforce  0

 

  2、关闭防火墙

    [root@localhost ~]# systemctl stop firewalld
    [root@localhost ~]# systemctl enable firewalld

 

  3、安装epel.repo源

    [root@localhost ~]# yum  -y  install   epel-release.noarch

    [root@localhost ~]# cd  /etc/yum.repos.d/

 

  4、yum安装Apache服务 软件

    [root@localhost ~]#  yum  -y  install  httpd*

    [root@localhost ~]# rpm -qa | grep httpd  #查看安装的httpd安装包

  httpd-2.4.6-97.el7.centos.5.x86_64
  httpd-manual-2.4.6-97.el7.centos.5.noarch
  httpd-itk-2.4.7.04-2.el7.x86_64
  httpd-tools-2.4.6-97.el7.centos.5.x86_64
  httpd-devel-2.4.6-97.el7.centos.5.x86_64

    注意:安装成功后,会默认生成下列两个文件  

[root@localhost ~]# vim   /etc/httpd/conf/httpd.conf  #主配置文件
[root@localhost conf]# cd   /var/www/html/  #默认网站家目录

 

  5、认识并配置文件里面的主要参数

    [root@localhost ~]# vim  /etc/httpd/conf/httpd.conf  #主配置文件

[root@localhost ~]# cat  /etc/httpd/conf/httpd.conf | grep  -v  ^#

  ServerRoot  "/etc/httpd"    #存放配置文件的目录

  Listen 80            #Apache服务监听端口

  Include conf.modules.d/*.conf

  User apache    #子进程的用户  

  Group apache    #子进程的组

  ServerAdmin  root@localhost    #设置管理员邮箱地址

<Directory />
  AllowOverride none
  Require all denied
</Directory>

DocumentRoot "/var/www/html"  #网站家目录

<Directory "/var/www">
  AllowOverride None
  Require all granted
</Directory>

  <Directory "/var/www/html">      #网站容器开始标识
    Options Indexes FollowSymLinks  #找不到主页时,以目录的方式呈现,并允许链接到网站根目录以外

    AllowOverride None  #none不使用 .htaccess控制,all允许

    Require all granted   #granted表示运行所有访问,denied表示拒绝所有访问
  </Directory>        #容器结束

<IfModule dir_module>
  DirectoryIndex index.html  #定义主页文件,当访问到网站目录时,如果有定义的主页文件,网站会自动访问
</IfModule>

<Files ".ht*">
  Require all denied
</Files>

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

  <IfModule logio_module>
    LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio
  </IfModule>

  CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>

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

  </IfModule>

  <Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
  </Directory>

<IfModule mime_module>
  TypesConfig /etc/mime.types

  AddType application/x-compress .Z
  AddType application/x-gzip .gz .tgz

  AddType text/html .shtml
  AddOutputFilter INCLUDES .shtml
</IfModule>

   AddDefaultCharset UTF-8  #字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异

  <IfModule mime_magic_module>
    MIMEMagicFile conf/magic
  </IfModule>

  EnableSendfile on

  IncludeOptional conf.d/*.conf

 

6、启动Apache服务以及检查80端口是否占用

  [root@localhost ~]# systemctl start httpd

[root@localhost ~]# lsof  -i:80
  COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  httpd 32553 root 4u IPv6 650696 0t0 TCP *:http (LISTEN)
  httpd 32558 apache 4u IPv6 650696 0t0 TCP *:http (LISTEN)
  httpd 32562 apache 4u IPv6 650696 0t0 TCP *:http (LISTEN)
  httpd 32563 apache 4u IPv6 650696 0t0 TCP *:http (LISTEN)
  httpd 32565 apache 4u IPv6 650696 0t0 TCP *:http (LISTEN)
  httpd 32566 apache 4u IPv6 650696 0t0 TCP *:http (LISTEN)

 

7、让网页index.html显示自定义内容

  ①访apache官网

  Apache服务的搭建与配置

 

    ②存放数据到html中

  [root@localhost html]# vim  /var/www/html/index.html

    name=llg age=24 sg=170 airen=wlz

  [root@localhost html]# systemctl start httpd

  Apache服务的搭建与配置

 

③用命令查看内容

[root@localhost html]# curl 192.168.112.146
  name=llg
  age=24
  sg=170
  airen=wlz

 

④用命令查看网站访问状态【大写的i】

[root@localhost html]# curl  -I  192.168.112.146
  HTTP/1.1 200 OK
  Date: Tue, 17 May 2022 11:36:05 GMT
  Server: Apache/2.4.6 (CentOS)
  Last-Modified: Tue, 17 May 2022 11:26:09 GMT
  ETag: "21-5df336846f761"
  Accept-Ranges: bytes
  Content-Length: 33
  Content-Type: text/html; charset=UTF-8

 

 

 

 

 

 

 

 

 ========================================================

 ================================================================================================================

二、安装Apache源码包

  1、下载、解压源码包以及安装源码包运行环境

[root@localhost ~]# cd  /opt/
[root@localhost opt]# ls
  httpd-2.4.53.tar.gz
[root@localhost opt]# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
[root@localhost opt]# tar  xf  httpd-2.4.53.tar.gz
[root@localhost opt]# ls
  httpd-2.4.53    httpd-2.4.53.tar.gz

 

  2、安装、执行

[root@localhost opt]# cd httpd-2.4.53/
[root@localhost httpd-2.4.53]# ls
  ABOUT_APACHE    BuildAll.dsp    configure    httpd.spec    libhttpd.mak    os    srclib
  acinclude.m4    BuildBin.dsp    configure.in   include    LICENSE    README    support
  Apache-apr2.dsw    buildconf    docs    INSTALL    Makefile.in    README.CHANGES    test
  Apache.dsw    CHANGES    emacs-style    InstallBin.dsp    Makefile.win    README.cmake

  ........
[root@localhost httpd-2.4.53]# cd /usr/local/
[root@localhost local]# ls
  bin    etc   games    include    lib    lib64    libexec    sbin   share    src
[root@localhost local]# cd /opt/httpd-2.4.53/
[root@localhost httpd-2.4.53]# ./configure   --prefix=/usr/local/apache2  &&  make  &&  make install
[root@localhost httpd-2.4.53]# ls /usr/local/
  apache2  bin   etc  games   include   lib   lib64   libexec   sbin  share   src

 

3、Apache 常用命令

    [root@localhost ~]# /usr/local/apache2/bin/apachectl  -M  #查看常见的模块(包括静态和动态)

    [root@localhost ~]# /usr/local/apache2/bin/apachectl   -l  #查看加载的静态模块

[root@localhost ~]# /usr/local/apache2/bin/apachectl  -t  #检查配置文件,是否语法错误
  AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

  #报错ServerName没有监听到本机,可以通过httpd.conf添加一个监听(如下操作)
  Syntax OK

    [root@localhost ~]# vim /usr/local/apache2/conf/httpd.conf

      ServerName localhost:80  #监听本机的80端口

    [root@localhost ~]# /usr/local/apache2/bin/apachectl   graceful  #加载配置文件,但不重启

    [root@localhost /]# lsof -i:80  #查看监听80端口

    [root@localhost ~]#  fuser  -k  80/tcp  #杀掉80端口所占的进程   
    [root@localhost ~]# /usr/local/apache2/bin/apachectl   start[restart][stop]  #启动/重启/停止apache服务

 

4、Apache配置用户认证

  ①修改配置(访问路径)

    [root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>    #删除其他认证
  <Directory /data/www/abc> # 为主目录或虚拟目录设置权限
    AllowOverride AuthConfig
    AuthName "llg"     #指定用户名和密码的文件
    AuthType Basic
    AuthUserFile /data/.htpasswd
    require valid-user
  </Directory>
</VirtualHost>

 

[root@localhost ~]# vim /usr/local/apache2/conf/httpd.conf   #配置文件中 的修改大概定位在

      <Directory />
        AllowOverride none
        Require all denied
      </Directory>

      DocumentRoot "/data/www/abc"  # /data/ww/abc为将要访问的页面的目录
      <Directory "/data/www/abc">

 

[root@localhost ~]# vim /usr/local/apache2/conf/httpd.conf
  Include conf/extra/httpd-vhosts.conf  #指定虚拟主机配置文件并将其附加到主配置文件

  [root@localhost /]# mkdir  -p  /data/www/abc
  [root@localhost /]# ls
    bin data etc lib llgservice mnt proc run srv tmp var
    boot dev home lib64 media opt root sbin sys usr

  ②htpasswd命令 生成密码文件
    [root@localhost /]# htpasswd -c /data/htpasswd llg
      New password:
      Re-type new password:
      Adding password for user llg
    [root@localhost /]# cat /data/htpasswd
      llg:$apr1$OZgyHK8p$86ImToAtwg4JF//hqry1G/
    [root@localhost /]# /usr/local/apache2/bin/apachectl  restart  #重启apache服务

    [root@localhost /]# 

    Apache服务的搭建与配置

 

 

  5、Apache配置默认虚拟主机

     ①修改apache主配置文件

    [root@localhost ~]# vim /usr/local/apache2/conf/httpd.conf  # 配置多路处理模块(MPM) httpd-mpm.conf

  # <Directory> blocks below.
  <Directory />
    AllowOverride none
    Require all granted
  </Directory>

      Include conf/extra/httpd-vhosts.conf  #打开虚拟主机配置文件

 

 ②修改apache的httpd-vhosts.conf虚拟主机配置文件

   [root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
  DocumentRoot "/tmp/111"
  ServerName www.111.com
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot "/data/www"
  ServerName www.test.com
  ServerAlias www.aaa.com
</VirtualHost>

 ③创建/dada/www/index.html与/tmp/111/index.html

   [root@localhost ~]#  mkdir  /dada/www/

   [root@localhost www]#  vim  index.html

        [root@localhost ~]#  mkdir  /tmp/111

        [root@localhost  111]#  vim  index.html

 

 ④指定域名和IP地址  并测试

      [root@localhost www]# vim /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.112.146 www.111.com
192.168.112.146 www.aaa.com
192.168.112.146 www.test.com

[root@localhost www]# ping www.111.com
  PING www.zj_111.com (192.168.112.146) 56(84) bytes of data.
  64 bytes from www.zj_111.com (192.168.112.146): icmp_seq=1 ttl=64 time=1.24 ms
  ^C
[root@localhost www]# ping www.aaa.com
  PING www.aaa.com (192.168.112.146) 56(84) bytes of data.
  64 bytes from www.zj_111.com (192.168.112.146): icmp_seq=1 ttl=64 time=0.211 ms
  ^C
[root@localhost www]# ping www.test.com
  PING www.test.com (192.168.112.146) 56(84) bytes of data.
  64 bytes from www.zj_111.com (192.168.112.146): icmp_seq=1 ttl=64 time=0.027 ms
  ^C

   [root@localhost /]# /usr/local/apache2/bin/apachectl  restart  #重启apache服务

 

   [root@localhost www]# curl -x 192.168.112.146:80 www.aaa.com      

Apache服务的搭建与配置

 Apache服务的搭建与配置

 

  6、Apache 日志管理

web服务器出现大量的访问日志和错误日志,所以我们要对日志进行切割,方便管理人员的查询。一些并不重要的记录,可以规定日志中不显示这些。打开虚拟主机配置文件里的日志记录,日志的路径在/usr/local/apache2/logs下。

认识日志:

  ErrorLog "logs/test.com-error_1og"  #错误日志

  customLog "logs/test.com-access_1og"common  #common是日志类型

    ① 配置日志切割与管理【解决查询量大问题、内存问题】

  [root@www logs]# vim /usr/local/apache2/conf/httpd.conf

    LoadModule log_config_module modules/mod_log_config.so  #默认是开启的

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

    %h 是来源IP

    %u  是访问user

    %t   是时间

     %r  是动作

   [root@www logs]#  /usr/local/apache2/conf/extra/httpd-vhosts.conf

  

  日志切割(修改虚拟主机的access log的定义)

<VirtualHost *:80>
  DocumentRoot "/data/www"
  ServerAlias www.aaa.com
  ServerName www.test.com
  CustomLog  "|/usr/local/apache2/bin/rotatelogs  -l  /usr/local/apache2/logs/test.com-access_%Y%m%d_log  86400"  combined  # %Y%m%d定年月日,86400秒即为一天切割。

</VirtualHost>

[root@www logs]# /usr/local/apache2/bin/apachectl restart
[root@www logs]# date 05190000    #修改时间,月日时分{一个占两位}
  2022年 05月 19日 星期四 00:00:00 CST
[root@www logs]# curl 192.168.112.146  #执行index.html页面
  hello,index.html文件内容
[root@www logs]# date 05200000
  2022年 05月 20日 星期五 00:00:00 CST
[root@www logs]# curl 192.168.112.146
  hello,index.html文件内容
[root@www logs]# ls  #生成两个日志文件
  access_log    error_log    httpd.pid    test.com-access_20220519_log   test.com-access_20220520_log

      [root@www logs]# cat test.com-access_20220519_log
        192.168.112.146 - - [19/May/2022:00:00:33 +0800] "GET / HTTP/1.1" 200 41 "-" "curl/7.29.0"

 

   ② Apache 不记录指定类型日志(例如照片类型)

<VirtualHost *:80>
  DocumentRoot "/data/www"
  ServerName www.test.com
  ServerAlias www.aaa.com

  ErrorLog "logs/test.com-error_log"
  SetEnvIf Request_URI ".*.gif$" image-request    #对gif 文件做一个标记 image-request,也可以写成abc
  SetEnvIf Request_URI ".*.jpg$" image-request    #setenvif 要和 customlog 写在一起
  SetEnvIf Request_URI ".*.png$" image-request
  SetEnvIf Request_URI ".*.bmp$" image-request
  SetEnvIf Request_URI ".*.swf$" image-request
  SetEnvIf Request_URI ".*.js$" image-requeest
  SetEnvIf Request_URI ".*.css$" image-request
  CustomLog "|/usr/local/apache2/bin/rotatelogs/usr/loca1/apache2/logs/test.com-access_%Y%m%d_log 86400" combined env=!image-request    #取反
</VirtualHost>

 [root@www logs]# /usr/local/apache2/bin/apachectl restart

 

 7、Apache 静态缓存配置

对于图片,html , css , Javascripts等,让客户端缓存,让访问时不需要去服务器上访问,提高用户体验,需要提前确认是否支持mod_expires.c模块

 ①修改httpd.conf主配置文件

  [root@www ~]# vim /usr/local/apache2/conf/httpd.conf

  LoadModule expires_module modules/mod_expires.so  #开启该配配置

②修改虚拟主机httpd-vhosts.conf配置文件

[root@www ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresByType image/gif "access plus 1 dayr"
  ExpiresByType image/jpeg "access plus 24 hours"
  ExpiresByType image/png "access plus 24 hours"
  ExpiresByType text/css "now plus 2 hours"
  ExpiresByType application/x-javascript "now plus 2 hours"
  ExpiresByType application/x-shockwave-flash "now plus 2 hours"
  ExpiresDefault "now plus 0 min"
</IfModule>

 

 

 8、Apache 防盗链

 

 

 

 

 

 

 9、Apache 访问控制

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

配置文件说明

① httpd-vhosts.conf配置文件,配置多路处理模块(MPM) httpd-mpm.conf:

<VirtualHost *:80>     # 管理员邮箱地址     ServerAdmin www.llgqq.com          # 访问域名     ServerName www.aaa.com          # 项目入口文件夹     DocumentRoot "/usr/local/apache2/htdocs"          # 错误日志文件路径     ErrorLog "logs/aaa.com-error.log"          # 日志文件路径,并指明日志文件格式 combined/common     CustomLog "logs/aaa.com-access.log" combined          # 设置权限     <Directory "/usr/local/apache2/htdocs">         # Options参数如下:           # Indexes 允许目录浏览           # MultiViews 允许内容协商的多重视图           # All 包含除MultiViews之外的所有特性,如果没有Options语句,默认为All           # ExecCGI 允许在该目录下执行CGI脚本           # FollowSymLinks 可以在该目录中使用符号连接           # Includes 允许服务器端包含功能           # IncludesNoExec 允许服务器端包含功能,但禁用执行CGI脚本         Options FollowSymLinks IncludesNoExec Indexes                  # 访问目录后进入的默认文件         DirectoryIndex index.html index.htm index.php                  # 位于每个目录下.htaccess文件中的指令类型。none为禁止使用.htaccess文件         AllowOverride all                  # Apache-2.4 访问权限         # Require all granted 允许所有来源的访问         # Require all denied  拒绝所有来源的访问         # Require host xmsb.com 允许特定域名访问         # Require ip 192.168.1 192.168.2 允许特定IP段访问         Require all granted     </Directory> </VirtualHost>

 

② httpd.conf主配置文件 (常用配置指令说明)【专属说明版权问题:转载别人的】

 1. ServerRoot:

    服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录。默认为安装目录,不需更改。

    语法:ServerRoot directory-path

    如: ServerRoot "/usr/local/apache-2.2.6"

    注意,此指令中的路径最后不要加 / 。

 

 2. 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

 3. 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。

 4. User:

     设置实际提供服务的子进程的用户。为了使用这个指令,服务器必须以root身份启动和初始化。如果你以非root身份启动服务器,子进程将不能够切换至非特权用户,并继续以启动服务器的原始用户身份运行。如果确实以root用户启动了服务器,那么父进程将仍然以root身份运行。

     用于运行子进程的用户必须是一个没有特权的用户,这样才能保证子进程无权访问那些不想为外界所知的文件,同样的,该用户亦需没有执行那些不应当被外界执行的程序的权限。强烈建议专门为Apache子进程建立一个单独的用户和组。一些管理员使用nobody用户,但是这并不能总是符合要求,因为可能有其他程序也在使用这个用户。

例:User daemon

 5. Group:

     设置提供服务的Apache子进程运行时的用户组。为了使用这个指令,Apache必须以root初始化启动,否则在切换用户组时会失败,并继续以初始化启动时的用户组运行。

     例:Group daemon

 6. ServerAdmin:

     设置在所有返回给客户端的错误信息中包含的管理员邮件地址。

     语法:ServerAdmin email-address|URL

     如果httpd不能将提供的参数识别为URL,它就会假定它是一个email-address ,并在超连接中用在mailto:后面。推荐使用一个Email地址,因为许多CGI脚本是这样认为的。如果你确实想使用URL,一定要保证指向一个你能够控制的服务器,否则用户将无法确保一定可以和你取得联系。

 7. ServerName:

     设置服务器用于辨识自己的主机名和端口号。

     语法:ServerName [scheme://]fully-qualified-domain-name[:port]

     可选的'scheme://'前缀仅在2.2.3以后的版本中可用,用于在代理之后或离线设备上也能正确的检测规范化的服务器URL。

     当没有指定ServerName时,服务器会尝试对IP地址进行反向查询来推断主机名。如果在ServerName中没有指定端口号,服务器会使用接受请求的那个端口。

     为了加强可靠性和可预测性,建议使用ServerName显式的指定一个主机名和端口号。

     如果使用的是基于域名的虚拟主机,在<VirtualHost>段中的ServerName将是为了匹配这个虚拟主机,在"Host:"请求头中必须出现的主机名。

8. DocumentRoot:

    设置Web文档根目录。

    语法:DocumentRoot directory-path

    在没有使用类似Alias这样的指令的情况下,服务器会将请求中的URL附加到DocumentRoot后面以构成指向文档的路径。

    如果directory-path不是绝对路径,则被假定为是相对于ServerRoot的路径。

    指定DocumentRoot时不应包括最后的"/"。

9. <Directory>:

     <Directory>和</Directory>用于封装一组指令,使之仅对某个目录及其子目录生效。

     语法:<Directory Directory-path> ... </Directory>

     Directory-path可以是一个目录的完整路径,或是包含了Unix shell匹配语法的通配符字符串。在通配符字符串中,"?"匹配任何单个的字符,"*"匹配任何字符序列。也可以使用"[]"来确定字符范围。在"~" 字符之后也可以使用正则表达式。

     如果有多个(非正则表达式)<Directory>配置段符合包含某文档的目录(或其父目录),那么指令将以短目录优先的规则进行应用,并包含.htaccess文件中的指令。

     正则表达式将在所有普通配置段之后予以考虑。所有的正则表达式将根据它们出现在配置文件中的顺序进行应用。

     <Directory>指令不可被嵌套使用,也不能出现在<Limit>或<LimitExcept>配置段中。

10. <Files>:

      提供基于文件名的访问控制,类似于<Directory>和<Location>指令。

      语法:<Files filename> ... </Files>

       filename参数应当是一个文件名或是一个包含通配符的字符串,其中"?"匹配任何单个字符,"*"匹配任何字符串序列。在"~"字符之后可以使用正则表达式。

       在此配置段中定义的指令将作用于其基本名称(不是完整的路径)与指定的文件名相符的对象。<Files>段将根据它们在配置文件中出现的顺序被处理:在<Directory>段和.htaccess

文件被处理之后,但在<Location>段之前。<Files>能嵌入到<Directory>段中以限制它们作用的文件系统范围,也可用于.htaccess文件当中,以允许用户在文件层面上控制对它们自己文件的访问。

 11. <IfModule>:

       封装根据指定的模块是否启用而决定是否生效的指令。

       语法:<IfModule [!]module-file|module-identifier> ... </IfModule>

        module-file是指编译模块时的文件名,比如mod_rewrite.c 。

        module-identifier是指模块的标识符,比如mod_rewrite 。

        在<IfModule>配置段中的指令仅当测试结果为真的时候才进行处理,否则所有其间的指令都将被忽略。

12. Options:

        控制在特定目录中将使用哪些服务器特性

        语法:Options [+|-]option [[+|-]option] ...

         option可以为None,不启用任何额外特性,或者下面选项中的一个或多个:

                All  除MultiViews之外的所有特性,这是默认设置。

                ExecCGI  允许使用mod_cgi执行CGI脚本。

                FollowSymLinks  服务器允许在此目录中使用符号连接,如果此配置位于<Location>配置段中,则会被忽略。

                Includes  允许使用mod_include提供的服务器端包含。

                IncludesNOEXEC  允许服务器端包含,但禁用"#exec cmd"和"#exec cgi",但仍可以从ScriptAlias目录使用"#include virtual"虚拟CGI脚本。

                Indexes  如果一个映射到目录的URL被请求,而此目录中又没有DirectoryIndex(例如:index.html),那么服务器会返回由mod_autoindex生成的一个格式化后的目录列表。

                MultiViews  允许使用mod_negotiation提供内容协商的"多重视图"(MultiViews)。

                SymLinksIfOwnerMatch  服务器仅在符号连接与其目的目录或文件的拥有者具有相同的uid时才使用它。 如果此配置出现在<Location>配置段中,则将被忽略。

         一般来说,如果一个目录被多次设置了Options ,则最特殊的一个会被完全接受(其它的被忽略),而各个可选项的设定彼此并不融合。然而,如果所有作用于Options指令的可选项前都加有"+" 或"-"符号,此可选项将被合并。所有前面加有"+"号的可选项将强制覆盖当前的可选项设置,而所有前面有"-"号的可选项将强制从当前可选项设置中去除。

13. AllowOverride:

         确定允许存在于.htaccess文件中的指令类型。

         语法:AllowOverride All|None|directive-type [directive-type] ...

          如果此指令被设置为None ,那么.htaccess文件将被完全忽略。事实上,服务器根本不会读取.htaccess文件。

          当此指令设置为All时,所有具有".htaccess"作用域的指令都允许出现在.htaccess文件中。

         directive-type可以是下列各组指令之一:

                 AuthConfig  允许使用与认证授权相关的指令

                 FileInfo  允许使用控制文档类型的指令、控制文档元数据的指令、mod_rewrite中的指令、mod_actions中的Action指令

                 Indexes  允许使用控制目录索引的指令

                 Limit  允许使用控制主机访问的指令

                 Options[=Option,...]  允许使用控制指定目录功能的指令(Options和XBitHack)。可以在等号后面附加一个逗号分隔的(无空格的)Options选项列表,用来控制允许Options指令

使用哪些选项。

                 AllowOverride仅在不包含正则表达式的<Directory>配置段中才是有效的。在<Location>, <DirectoryMatch>, <Files>配置段中都是无效的。

                 Order:控制默认的访问状态与Allow和Deny指令生效的顺序。

                 Ordering取值范围是以下几种范例之一:

                      Deny,Allow  Deny指令在Allow指令之前被评估。默认允许所有访问。任何不匹配Deny指令或者匹配Allow指令的客户都被允许访问。

                      Allow,Deny  Allow指令在Deny指令之前被评估。默认拒绝所有访问。任何不匹配Allow指令或者匹配Deny指令的客户都将被禁止访问。

                      Mutual-failure  只有出现在Allow列表并且不出现在Deny列表中的主机才被允许访问。这种顺序与"Order Allow,Deny"具有同样效果,不赞成使用。

                      关键字只能用逗号分隔,它们之间不能有空格,在所有情况下每个Allow和Deny指令语句都将被评估。

                Allow:控制哪些主机可以访问服务器的该区域。可以根据主机名、IP地址、 IP地址范围或其他环境变量中捕获的客户端请求特性进行控制。

                     语法:Allow from all|host|env=env-variable [host|env=env-variable] ...

                     这个指令的第一个参数总是"from",随后的参数可以有三种不同形式:如果指定"Allow from all",则允许所有主机访问,按照下述Deny和Order指令的配置;若要只允许特定的主

机或主机群访问服务器。

                      host可以用下面任何一种格式来指定:一个(部分)域名、完整的IP地址、部分IP地址、网络/掩码、网络/nnn无类别域间路由规格;

                      第三种参数格式允许对服务器的访问由环境变量的一个扩展指定,指定"Allow from env=env-variable"时,如果环境变量env-variable存在则访问被允许,使用由mod_setenvif提供的指令,服务器用一种基于客户端请求的弹性方式提供了设置环境变量的能力。因此,这条指令可以用于允许基于像User-Agent(浏览器类型)、Referer或其他 HTTP请求头字段的访问。

                Deny:控制哪些主机被禁止访问服务器的该区域。可以根据主机名、IP地址、 IP地址范围或其他环境变量中捕获的客户端请求特性进行控制。

                      语法:Deny from all|host|env=env-variable [host|env=env-variable] ...

                       此指令的参数设置和Allow指令完全相同。 

14. DirectoryIndex:

         当客户端请求一个目录时寻找的资源列表。

         语法:DirectoryIndex Local-url [Local-url] ...

         Local-url(%已解码的)是一个相对于被请求目录的文档的URL(通常是那个目录中的一个文件)。可以指定多个URL,服务器将返回最先找到的那一个,

         比如:

                DirectoryIndex index.html index.php

15. ErrorLog:

          指定当服务器遇到错误时记录错误日志的文件。

          语法:ErrorLog file-path|syslog[:facility]

          如果file-path不是一个以斜杠(/)开头的绝对路径,那么将被认为是一个相对于ServerRoot的相对路径;如果file-path以一个管道符号(|)开头,那么会为它指定一个命令来处理错误日志,如 ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/%w/errors_log"。

          如果系统支持,使用"syslog"替代文件名将通过 syslogd(8)来记载日志。默认将使用系统日志机制local7 ,但您可以用"syslog:facility"语法来覆盖这个设置,其中,facility的取值为syslog(1)中记载的任何一个名字。

 16. LogLevel:

         用于调整记录在错误日志中的信息的详细程度。

         语法:LogLevel level

         可以选择下列level,依照重要性降序排列:

               emerg  紧急(系统无法使用)

               alert    必须立即采取措施

               crit      致命情况

               error    错误情况

               warn    警告情况

               notice  一般重要情况

               info     普通信息

              debug   调试信息

         当指定了某个级别时,所有级别高于它的信息也会被同时记录。比如,指定 LogLevel info ,则所有notice和warn级别的信息也会被记录。建议至少使用crit级别。

         当错误日志是一个单独分开的正式文件的时候,notice级别的消息总是会被记录下来,而不能被屏蔽。但是,当使用syslog来记录时就没有这个问题。 

17. LogFormat:

         定义访问日志的记录格式。

         语法:LogFormat format|nickname [nickname]

         LogFormat指令可以使用两种定义格式中的一种。

         在第一种格式中,指令只带一个参数,以定义后续的TransferLog指令定义的日志格式。另外它也可以通过下述的方法使用nickname来引用某个之前的LogFormat定义的日志格式。

         第二种定义LogFormat指令的格式中,将一个直接的format和一个nickname联系起来。这样在后续的LogFormat或 CustomLog指令中,就不用一再重复整个冗长的格式串。

         定义别名的LogFormat指令仅仅用来定义一个nickname ,而不做其它任何事情,也就是说,它只是定义了这个别名,它既没有实际应用这个别名,也不是把它设为默认的格式。

         因此,它不会影响后续的 TransferLog指令。另外,LogFormat不能用一个别名来定义另一个别名。nickname不能包含百分号(%)。

         关于format的格式,请参见Apache2.2官方文档中的自定义日志格式小节。

18. CustomLog:

         设定日志的文件名和格式。

         语法:CustomLog file|pipe format|nickname [env=[!]environment-variable]

         第一个参数指定了日志记录的位置,可以使用以下两种方式来设定:

               file  相对于ServerRoot的日志文件名。
               pipe  管道符"|"后面紧跟着一个把日志输出当作标准输入的处理程序路径。

         第二个参数指定了写入日志文件的内容。它既可以是由前面的LogFormat指令定义的nickname ,也可以是直接按Apache2.2官方文档中的自定义日志格式小节所描述的规则定义的format字符串。

         第三个参数是可选的,它根据服务器上特定的环境变量是否被设置来决定是否对某一特定的请求进行日志记录。如果这个特定的环境变量被设置(或者在"env=!name"的情况下未被设置),那么这个请求将被记录。可以使用mod_setenvif和/或mod_rewrite模块来为每个请求设置环境变量。

 19. TransferLog:

        指定日志文件的位置。

        语法:TransferLog file|pipe

         本指令除不允许直接定义日志格式或根据条件进行日志记录外,与CustomLog指令有完全相同的参数和功能。实际应用中,日志的格式是由最近的非别名定义的LogFormat指令指定。如果没有定义任何日志格式,则使用通用日志格式。

 20. Alias:

          映射URL到文件系统的特定区域。

          语法:Alias URL-path file-path|directory-path

          Alias指令使文档可以被存储在DocumentRoot以外的本地文件系统中。以(%已解码的)url-path路径开头的URL可以被映射到以directory-path开头的本地文件。

          如果对在DocumentRoot之外的某个目录建立了一个Alias ,则可能需要通过<Directory>段明确的对目标目录设定访问权限。

21.ScriptAlias:

          映射一个URL到文件系统并视之为CGI脚本目录。

          语法:ScriptAlias URL-path file-path|directory-path

          ScriptAlias指令的行为与Alias指令相同,但同时它又标明此目录中含有应该由cgi-script处理器处理的CGI脚本。以URL-path开头的(%已解码的)的URL会被映射到由第二个参数指定的具有完整路径名的本地文件系统中的脚本。

          ScriptSock:在以线程式MPM(worker)运行的Apache中设置用来与CGI守护进程通信的套接字文件名前缀(其后附加父进程 PID组成完整的文件名)。这个套接字将会用启动Apache服

务器的父进程用户权限(通常是root)打开。为了维护与CGI脚本通讯的安全性,不允许其他用户拥有写入套接字所在目录的权限是很重要的。

 22. DefaultType:

         在服务器无法由其他方法确定内容类型时,发送的默认MIME内容类型。

         语法:DefaultType MIME-type

         默认:DefaultType text/plain

23. AddType:

         在给定的文件扩展名与特定的内容类型之间建立映射关系。

         语法:AddType MIME-type extension [extension] ...

         MIME-type指明了包含extension扩展名的文件的媒体类型。这个映射关系会添加在所有有效的映射关系上,并覆盖所有相同的extension扩展名映射。

         extension参数是不区分大小的,并且可以带或不带前导点。

24. ErrorDocument:

         批示当遇到错误的时候服务器将给客户端什么样的应答。

         语法:ErrorDocument error-code document

         error-code  服务器返回的错误代码

         document  可以由一个斜杠(/)开头来指示一个本地URL(相对于DocumentRoot),或是提供一个能被客户端解释的完整的URL。

         此外还能提供一个可以被浏览器显示的消息。

         比如:

                 ErrorDocument 500http://www.entage.net/err500.html

                 ErrorDocument 404 /errors/bad_urls.html

                 ErrorDocument 403 "Sorry can't allow you access today"

25. EnableMMAP:

          指示httpd在递送中如果需要读取一个文件的内容,它是否可以使用内存映射。

          语法:EnableMMAP On|Off

          当处理一个需要访问文件中的数据的请求时,比如说当递送一个使用mod_include进行服务器端分析的文件时,如果操作系统支持,Apache将默认使用内存映射。

          这种内存映射有时会带来性能的提高,但在某些情况下,您可能会需要禁用内存映射以避免一些操作系统的问题:

          在一些多处理器的系统上,内存映射会减低一些httpd的性能;

          在挂载了NFS的DocumentRoot上,若已经将一个文件进行了内存映射,则删除或截断这个文件会造成httpd因为分段故障而崩溃。

          在可能遇到这些问题的服务器配置过程中,应当使用下面的命令来禁用内存映射:

26. EnableMMAP Off

          对于挂载了NFS的文件夹,可以单独在<directory>段中指定禁用内存映射:

          <Directory "/path-to-nfs-files">
             EnableMMAP Off
          </Directory>

27. EnableSendfile:

          控制httpd是否可以使用操作系统内核的sendfile支持来将文件发送到客户端。

          默认情况下,当处理一个请求并不需要访问文件内部的数据时(比如发送一个静态的文件内容),如果操作系统支持,Apache将使用sendfile将文件内容直接发送到客户端而并不读取文件。

          这个sendfile机制避免了分开的读和写操作以及缓冲区分配,但是在一些平台或者一些文件系统上,最好禁止这个特性来避免一些问题:

                  一些平台可能会有编译系统检测不到的有缺陷的sendfile支持,特别是将在其他平台上使用交叉编译得到的二进制文件运行于当前对sendfile支持有缺陷的平台时;

                  在Linux上启用IPv6时,使用sendfile将会触发某些网卡上的TCP校验和卸载bug;

                  当Linux运行在Itanium处理器上的时候,sendfile可能无法处理大于2GB的文件;

                  对于一个通过网络挂载了NFS文件系统的DocumentRoot (比如:NFS或SMB),内核可能无法可靠的通过自己的缓冲区服务于网络文件。

          如果出现以上情况,你应当禁用sendfile :

            EnableSendfile Off

          针对NFS或SMB,可以单独在<directory>段中指定禁用:

             <Directory "/path-to-nfs-files">
                 EnableSendfile Off
             </Directory>

28. include:

         在服务器配置文件中包含其它配置文件。

         语法:Include file-path|directory-path

         Shell风格(fnmatch())的通配符可以用于按照字母顺序一次包含多个文件。另外,如果Include指向了一个目录而不是一个文件,Apache将读入该目录及其子目录下的所有文件,并依照字母顺序将这些文件作为配置文件进行解析。但是并不推荐这么做,因为偶尔会有临时文件在这个目录中生成,从而导致httpd启动失败。文件的路径可以是一个完整的绝对路径(以一个斜杠开头),或是相对于ServerRoot目录的相对路径。

 29. 设置动态加载的DSO模块

         #如果需要提供基于文本文件的认证,加载此模块,否则注释掉

              LoadModule authn_file_module modules/mod_authn_file.so

         #如果需要提供基于DBM文件的认证,加载此模块,否则注释掉

            #LoadModule authn_dbm_module modules/mod_authn_dbm.so

         #如果需要提供匿名用户认证,加载此模块,否则注释掉

            #LoadModule authn_anon_module modules/mod_authn_anon.so

         #如果需要提供基于SQL数据库的认证,加载此模块,否则注释掉

            #LoadModule authn_dbd_module modules/mod_authn_dbd.so

         #如果需要在未正确配置认证模块的情况下简单拒绝一切认证信息,加载此模块,否则注释掉

              LoadModule authn_default_module modules/mod_authn_default.so

         #此模块提供基于主机名、IP地址、请求特征的访问控制,Allow、Deny指令需要,推荐加载。

              LoadModule authz_host_module modules/mod_authz_host.so

         #如果需要使用纯文本文件为组提供授权支持,加载此模块,否则注释掉

            #LoadModule authz_groupfile_module modules/mod_authz_groupfile.so

         #如果需要提供基于每个用户的授权支持,加载此模块,否则注释掉

              LoadModule authz_user_module modules/mod_authz_user.so

         #如果需要使用DBM文件为组提供授权支持,加载此模块,否则注释掉

            #LoadModule authz_dbm_module modules/mod_authz_dbm.so

         #如果需要基于文件的所有者进行授权,加载此模块,否则注释掉

            #LoadModule authz_owner_module modules/mod_authz_owner.so

         #如果需要在未正确配置授权支持模块的情况下简单拒绝一切授权请求,加载此模块,否则注释掉

              LoadModule authz_default_module modules/mod_authz_default.so

         #如果需要提供基本的HTTP认证,加载此模块,否则注释掉,此模块至少需要同时加载一个认证支持模块和一个授权支持模块

              LoadModule auth_basic_module modules/mod_auth_basic.so

         #如果需要提供HTTP MD5摘要认证,加载此模块,否则注释掉,此模块至少需要同时加载一个认证支持模块和一个授权支持模块

            #LoadModule auth_digest_module modules/mod_auth_digest.so

         #此模块提供文件描述符缓存支持,从而提高Apache性能,推荐加载,但请小心使用

              LoadModule file_cache_module modules/mod_file_cache.so

         #此模块提供基于URI键的内容动态缓存(内存或磁盘),从而提高Apache性能,必须与mod_disk_cache/mod_mem_cache同时使用,推荐加载

              LoadModule cache_module modules/mod_cache.so

         #此模块为mod_cache提供基于磁盘的缓存管理,推荐加载

              LoadModule disk_cache_module modules/mod_disk_cache.so

         #此模块为mod_cache提供基于内存的缓存管理,推荐加载

              LoadModule mem_cache_module modules/mod_mem_cache.so

         #如果需要管理SQL数据库连接,为需要数据库功能的模块提供支持,加载此模块,否则注释掉(推荐)

            #LoadModule dbd_module modules/mod_dbd.so

         #此模块将所有I/O操作转储到错误日志中,会导致在日志中写入及其海量的数据,只建议在发现问题并进行调试的时候使用

            #LoadModule dumpio_module modules/mod_dumpio.so

         #如果需要使用外部程序作为过滤器,加载此模块(不推荐),否则注释掉

            #LoadModule ext_filter_module modules/mod_ext_filter.so

         #如果需要实现服务端包含文档(SSI)处理,加载此模块(不推荐),否则注释掉

            #LoadModule include_module modules/mod_include.so

         #如果需要根据上下文实际情况对输出过滤器进行动态配置,加载此模块,否则注释掉

              LoadModule filter_module modules/mod_filter.so

         #如果需要服务器在将输出内容发送到客户端以前进行压缩以节约带宽,加载此模块(推荐),否则注释掉

              LoadModule deflate_module modules/mod_deflate.so

         #如果需要记录日志和定制日志文件格式,加载此模块(推荐),否则注释掉

              LoadModule log_config_module modules/mod_log_config.so

         #如果需要对每个请求的输入/输出字节数以及HTTP头进行日志记录,加载此模块,否则注释掉

            #LoadModule logio_module modules/mod_logio.so

         #如果允许Apache修改或清除传送到CGI脚本和SSI页面的环境变量,加载此模块,否则注释掉

              LoadModule env_module modules/mod_env.so

         #如果允许通过配置文件控制HTTP的"Expires:"和"Cache-Control:"头内容,加载此模块(推荐),否则注释掉

              LoadModule expires_module modules/mod_expires.so

         #如果允许通过配置文件控制任意的HTTP请求和应答头信息,加载此模块,否则注释掉

              LoadModule headers_module modules/mod_headers.so

         #如果需要实现RFC1413规定的ident查找,加载此模块(不推荐),否则注释掉

            #LoadModule ident_module modules/mod_ident.so

         #如果需要根据客户端请求头字段设置环境变量,加载此模块,否则注释掉

              LoadModule setenvif_module modules/mod_setenvif.so

         #此模块是mod_proxy的扩展,提供Apache JServ Protocol支持,只在必要时加载

            #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

         #此模块是mod_proxy的扩展,提供负载均衡支持,只在必要时加载

            #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

         #如果需要根据文件扩展名决定应答的行为(处理器/过滤器)和内容(MIME类型/语言/字符集/编码),加载此模块,否则注释掉

              LoadModule mime_module modules/mod_mime.so

         #如果允许Apache提供DAV协议支持,加载此模块,否则注释掉

            #LoadModule dav_module modules/mod_dav.so

         #此模块生成描述服务器状态的Web页面,只建议在追踪服务器性能和问题时加载

            #LoadModule status_module modules/mod_status.so

        #如果需要自动对目录中的内容生成列表(类似于"ls"或"dir"命令),加载此模块(会带来安全问题,不推荐),否则注释掉

            #LoadModule autoindex_module modules/mod_autoindex.so

        #如果需要服务器发送自己包含HTTP头内容的文件,加载此模块,否则注释掉

           #LoadModule asis_module modules/mod_asis.so

        #如果需要生成Apache配置情况的Web页面,加载此模块(会带来安全问题,不推荐),否则注释掉

           #LoadModule info_module modules/mod_info.so

       #如果需要在非线程型MPM(prefork)上提供对CGI脚本执行的支持,加载此模块,否则注释掉

           #LoadModule cgi_module modules/mod_cgi.so

       #此模块在线程型MPM(worker)上用一个外部CGI守护进程执行CGI脚本,如果正在多线程模式下使用CGI程序,推荐替换mod_cgi加载,否则注释掉

           #LoadModule cgid_module modules/mod_cgid.so

       #此模块为mod_dav访问服务器上的文件系统提供支持,如果加载mod_dav,则也应加载此模块,否则注释掉

           #LoadModule dav_fs_module modules/mod_dav_fs.so

       #如果需要提供大批量虚拟主机的动态配置支持,加载此模块,否则注释掉

           #LoadModule vhost_alias_module modules/mod_vhost_alias.so

       #如果需要提供内容协商支持(从几个有效文档中选择一个最匹配客户端要求的文档),加载此模块(推荐),否则注释掉

             LoadModule negotiation_module modules/mod_negotiation.so

       #如果需要指定目录索引文件以及为目录提供"尾斜杠"重定向,加载此模块(推荐),否则注释掉

             LoadModule dir_module modules/mod_dir.so

       #如果需要处理服务器端图像映射,加载此模块,否则注释掉

            #LoadModule imagemap_module modules/mod_imagemap.so

       #如果需要针对特定的媒体类型或请求方法执行CGI脚本,加载此模块,否则注释掉

            #LoadModule actions_module modules/mod_actions.so

       #如果希望服务器自动纠正URL中的拼写错误,加载此模块(推荐),否则注释掉

              LoadModule speling_module modules/mod_speling.so

        #如果允许在URL中通过"/~username"形式从用户自己的主目录中提供页面,加载此模块,否则注释掉

            #LoadModule userdir_module modules/mod_userdir.so

        #此模块提供从文件系统的不同部分到文档树的映射和URL重定向,推荐加载

              LoadModule alias_module modules/mod_alias.so

        #如果需要基于一定规则实时重写URL请求,加载此模块(推荐),否则注释掉

              LoadModule rewrite_module modules/mod_rewrite.so

 

       #设置DocumentRoot指定目录的属性

              <Directory "/usr/local/apache-2.2.6/htdocs">

                 Options FollowSymLinks

                 AllowOverride None

                 Order allow,deny

                 Allow from all

             </Directory>

 

      #设置默认目录资源列表文件

             <IfModule dir_module>

                DirectoryIndex index.html

             </IfModule>

 

      #拒绝对.ht开头文件的访问,以保护.htaccess文件

             <FilesMatch "^.ht">

                Order allow,deny

                Deny from all

                Satisfy All

             </FilesMatch>


             <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

               <IfModule logio_module>

                    LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio

               </IfModule>

               #指定访问日志及使用的格式

              CustomLog logs/access_log combined

            </IfModule>

 

         #设定默认CGI脚本目录及别名

             ScriptAlias /cgi-bin/ "/usr/local/apache-2.2.6/cgi-bin/"


         #在以线程式MPM(worker)运行的Apache中设置用来与CGI守护进程通信的套接字文件名前缀

            <IfModule cgid_module>

                 Scriptsock logs/cgisock

            </IfModule>

 

         #设定默认CGI脚本目录的属性

              <Directory "/usr/local/apache-2.2.6/cgi-bin">

                AllowOverride None

                Options None

                Order allow,deny

                Allow from all

              </Directory>

 

        #设定默认MIME内容类型

              DefaultType text/plain

              <IfModule mime_module>

                 #指定MIME类型映射文件

                TypesConfig conf/mime.types

                #增加.Z .tgz的类型映射

                AddType application/x-compress .Z

                AddType application/x-gzip .gz .tgz

             </IfModule>

 

        #启用内存映射

             EnableMMAP on

        #使用操作系统内核的sendfile支持来将文件发送到客户端

             EnableSendfile on

        #指定多路处理模块(MPM)配置文件并将其附加到主配置文件

             Include conf/extra/httpd-mpm.conf

        #指定多语言错误应答配置文件并将其附加到主配置文件

             Include conf/extra/httpd-multilang-errordoc.conf

        #指定目录列表配置文件并将其附加到主配置文件

            #Include conf/extra/httpd-autoindex.conf

        #指定语言配置文件并将其附加到主配置文件

              Include conf/extra/httpd-languages.conf

        #指定用户主目录配置文件并将其附加到主配置文件

            #Include conf/extra/httpd-userdir.conf

        #指定用于服务器信息和状态显示的配置文件并将其附加到主配置文件

            #Include conf/extra/httpd-info.conf

        #指定提供Apache文档访问的配置文件并将其附加到配置文件

            #Include conf/extra/httpd-manual.conf

        #指定DAV配置文件并将其附加到主配置文件

            #Include conf/extra/httpd-dav.conf

        #指定与Apache服务自身相关的配置文件并将其附加到主配置文件

              Include conf/extra/httpd-default.conf

        #指定mod_deflate压缩模块配置文件并将其附加到主配置文件

              Include conf/extra/httpd-deflate.conf

        #指定mod_expires模块配置文件并将其附加到主配置文件

              Include conf/extra/httpd-expires.conf

        #指定虚拟主机配置文件并将其附加到主配置文件

             #Include conf/extra/httpd-vhosts.conf

        #指定SSL配置文件并将其附加到主配置文件

               Include conf/extra/httpd-ssl.conf

        #SSL默认配置

              <IfModule ssl_module>

                    SSLRandomSeed startup builtin

                    SSLRandomSeed connect builtin

              </IfModule>

 

 1. ServerRoot:

    服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录。默认为安装目录,不需更改。

    语法:ServerRoot directory-path

    如: ServerRoot "/usr/local/apache-2.2.6"

    注意,此指令中的路径最后不要加 / 。

 

 2. 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

 3. 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。

 4. User:

     设置实际提供服务的子进程的用户。为了使用这个指令,服务器必须以root身份启动和初始化。如果你以非root身份启动服务器,子进程将不能够切换至非特权用户,并继续以启动服务器的原始用户身份运行。如果确实以root用户启动了服务器,那么父进程将仍然以root身份运行。

     用于运行子进程的用户必须是一个没有特权的用户,这样才能保证子进程无权访问那些不想为外界所知的文件,同样的,该用户亦需没有执行那些不应当被外界执行的程序的权限。强烈建议专门为Apache子进程建立一个单独的用户和组。一些管理员使用nobody用户,但是这并不能总是符合要求,因为可能有其他程序也在使用这个用户。

例:User daemon

 5. Group:

     设置提供服务的Apache子进程运行时的用户组。为了使用这个指令,Apache必须以root初始化启动,否则在切换用户组时会失败,并继续以初始化启动时的用户组运行。

     例:Group daemon

 6. ServerAdmin:

     设置在所有返回给客户端的错误信息中包含的管理员邮件地址。

     语法:ServerAdmin email-address|URL

     如果httpd不能将提供的参数识别为URL,它就会假定它是一个email-address ,并在超连接中用在mailto:后面。推荐使用一个Email地址,因为许多CGI脚本是这样认为的。如果你确实想使用URL,一定要保证指向一个你能够控制的服务器,否则用户将无法确保一定可以和你取得联系。

 7. ServerName:

     设置服务器用于辨识自己的主机名和端口号。

     语法:ServerName [scheme://]fully-qualified-domain-name[:port]

     可选的'scheme://'前缀仅在2.2.3以后的版本中可用,用于在代理之后或离线设备上也能正确的检测规范化的服务器URL。

     当没有指定ServerName时,服务器会尝试对IP地址进行反向查询来推断主机名。如果在ServerName中没有指定端口号,服务器会使用接受请求的那个端口。

     为了加强可靠性和可预测性,建议使用ServerName显式的指定一个主机名和端口号。

     如果使用的是基于域名的虚拟主机,在<VirtualHost>段中的ServerName将是为了匹配这个虚拟主机,在"Host:"请求头中必须出现的主机名。

8. DocumentRoot:

    设置Web文档根目录。

    语法:DocumentRoot directory-path

    在没有使用类似Alias这样的指令的情况下,服务器会将请求中的URL附加到DocumentRoot后面以构成指向文档的路径。

    如果directory-path不是绝对路径,则被假定为是相对于ServerRoot的路径。

    指定DocumentRoot时不应包括最后的"/"。

9. <Directory>:

     <Directory>和</Directory>用于封装一组指令,使之仅对某个目录及其子目录生效。

     语法:<Directory Directory-path> ... </Directory>

     Directory-path可以是一个目录的完整路径,或是包含了Unix shell匹配语法的通配符字符串。在通配符字符串中,"?"匹配任何单个的字符,"*"匹配任何字符序列。也可以使用"[]"来确定字符范围。在"~" 字符之后也可以使用正则表达式。

     如果有多个(非正则表达式)<Directory>配置段符合包含某文档的目录(或其父目录),那么指令将以短目录优先的规则进行应用,并包含.htaccess文件中的指令。

     正则表达式将在所有普通配置段之后予以考虑。所有的正则表达式将根据它们出现在配置文件中的顺序进行应用。

     <Directory>指令不可被嵌套使用,也不能出现在<Limit>或<LimitExcept>配置段中。

10. <Files>:

      提供基于文件名的访问控制,类似于<Directory>和<Location>指令。

      语法:<Files filename> ... </Files>

       filename参数应当是一个文件名或是一个包含通配符的字符串,其中"?"匹配任何单个字符,"*"匹配任何字符串序列。在"~"字符之后可以使用正则表达式。

       在此配置段中定义的指令将作用于其基本名称(不是完整的路径)与指定的文件名相符的对象。<Files>段将根据它们在配置文件中出现的顺序被处理:在<Directory>段和.htaccess

文件被处理之后,但在<Location>段之前。<Files>能嵌入到<Directory>段中以限制它们作用的文件系统范围,也可用于.htaccess文件当中,以允许用户在文件层面上控制对它们自己文件的访问。

 11. <IfModule>:

       封装根据指定的模块是否启用而决定是否生效的指令。

       语法:<IfModule [!]module-file|module-identifier> ... </IfModule>

        module-file是指编译模块时的文件名,比如mod_rewrite.c 。

        module-identifier是指模块的标识符,比如mod_rewrite 。

        在<IfModule>配置段中的指令仅当测试结果为真的时候才进行处理,否则所有其间的指令都将被忽略。

12. Options:

        控制在特定目录中将使用哪些服务器特性

        语法:Options [+|-]option [[+|-]option] ...

         option可以为None,不启用任何额外特性,或者下面选项中的一个或多个:

                All  除MultiViews之外的所有特性,这是默认设置。

                ExecCGI  允许使用mod_cgi执行CGI脚本。

                FollowSymLinks  服务器允许在此目录中使用符号连接,如果此配置位于<Location>配置段中,则会被忽略。

                Includes  允许使用mod_include提供的服务器端包含。

                IncludesNOEXEC  允许服务器端包含,但禁用"#exec cmd"和"#exec cgi",但仍可以从ScriptAlias目录使用"#include virtual"虚拟CGI脚本。

                Indexes  如果一个映射到目录的URL被请求,而此目录中又没有DirectoryIndex(例如:index.html),那么服务器会返回由mod_autoindex生成的一个格式化后的目录列表。

                MultiViews  允许使用mod_negotiation提供内容协商的"多重视图"(MultiViews)。

                SymLinksIfOwnerMatch  服务器仅在符号连接与其目的目录或文件的拥有者具有相同的uid时才使用它。 如果此配置出现在<Location>配置段中,则将被忽略。

         一般来说,如果一个目录被多次设置了Options ,则最特殊的一个会被完全接受(其它的被忽略),而各个可选项的设定彼此并不融合。然而,如果所有作用于Options指令的可选项前都加有"+" 或"-"符号,此可选项将被合并。所有前面加有"+"号的可选项将强制覆盖当前的可选项设置,而所有前面有"-"号的可选项将强制从当前可选项设置中去除。

13. AllowOverride:

         确定允许存在于.htaccess文件中的指令类型。

         语法:AllowOverride All|None|directive-type [directive-type] ...

          如果此指令被设置为None ,那么.htaccess文件将被完全忽略。事实上,服务器根本不会读取.htaccess文件。

          当此指令设置为All时,所有具有".htaccess"作用域的指令都允许出现在.htaccess文件中。

         directive-type可以是下列各组指令之一:

                 AuthConfig  允许使用与认证授权相关的指令

                 FileInfo  允许使用控制文档类型的指令、控制文档元数据的指令、mod_rewrite中的指令、mod_actions中的Action指令

                 Indexes  允许使用控制目录索引的指令

                 Limit  允许使用控制主机访问的指令

                 Options[=Option,...]  允许使用控制指定目录功能的指令(Options和XBitHack)。可以在等号后面附加一个逗号分隔的(无空格的)Options选项列表,用来控制允许Options指令

使用哪些选项。

                 AllowOverride仅在不包含正则表达式的<Directory>配置段中才是有效的。在<Location>, <DirectoryMatch>, <Files>配置段中都是无效的。

                 Order:控制默认的访问状态与Allow和Deny指令生效的顺序。

                 Ordering取值范围是以下几种范例之一:

                      Deny,Allow  Deny指令在Allow指令之前被评估。默认允许所有访问。任何不匹配Deny指令或者匹配Allow指令的客户都被允许访问。

                      Allow,Deny  Allow指令在Deny指令之前被评估。默认拒绝所有访问。任何不匹配Allow指令或者匹配Deny指令的客户都将被禁止访问。

                      Mutual-failure  只有出现在Allow列表并且不出现在Deny列表中的主机才被允许访问。这种顺序与"Order Allow,Deny"具有同样效果,不赞成使用。

                      关键字只能用逗号分隔,它们之间不能有空格,在所有情况下每个Allow和Deny指令语句都将被评估。

                Allow:控制哪些主机可以访问服务器的该区域。可以根据主机名、IP地址、 IP地址范围或其他环境变量中捕获的客户端请求特性进行控制。

                     语法:Allow from all|host|env=env-variable [host|env=env-variable] ...

                     这个指令的第一个参数总是"from",随后的参数可以有三种不同形式:如果指定"Allow from all",则允许所有主机访问,按照下述Deny和Order指令的配置;若要只允许特定的主

机或主机群访问服务器。

                      host可以用下面任何一种格式来指定:一个(部分)域名、完整的IP地址、部分IP地址、网络/掩码、网络/nnn无类别域间路由规格;

                      第三种参数格式允许对服务器的访问由环境变量的一个扩展指定,指定"Allow from env=env-variable"时,如果环境变量env-variable存在则访问被允许,使用由mod_setenvif提供的指令,服务器用一种基于客户端请求的弹性方式提供了设置环境变量的能力。因此,这条指令可以用于允许基于像User-Agent(浏览器类型)、Referer或其他 HTTP请求头字段的访问。

                Deny:控制哪些主机被禁止访问服务器的该区域。可以根据主机名、IP地址、 IP地址范围或其他环境变量中捕获的客户端请求特性进行控制。

                      语法:Deny from all|host|env=env-variable [host|env=env-variable] ...

                       此指令的参数设置和Allow指令完全相同。 

14. DirectoryIndex:

         当客户端请求一个目录时寻找的资源列表。

         语法:DirectoryIndex Local-url [Local-url] ...

         Local-url(%已解码的)是一个相对于被请求目录的文档的URL(通常是那个目录中的一个文件)。可以指定多个URL,服务器将返回最先找到的那一个,

         比如:

                DirectoryIndex index.html index.php

15. ErrorLog:

          指定当服务器遇到错误时记录错误日志的文件。

          语法:ErrorLog file-path|syslog[:facility]

          如果file-path不是一个以斜杠(/)开头的绝对路径,那么将被认为是一个相对于ServerRoot的相对路径;如果file-path以一个管道符号(|)开头,那么会为它指定一个命令来处理错误日志,如 ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/%w/errors_log"。

          如果系统支持,使用"syslog"替代文件名将通过 syslogd(8)来记载日志。默认将使用系统日志机制local7 ,但您可以用"syslog:facility"语法来覆盖这个设置,其中,facility的取值为syslog(1)中记载的任何一个名字。

 16. LogLevel:

         用于调整记录在错误日志中的信息的详细程度。

         语法:LogLevel level

         可以选择下列level,依照重要性降序排列:

               emerg  紧急(系统无法使用)

               alert    必须立即采取措施

               crit      致命情况

               error    错误情况

               warn    警告情况

               notice  一般重要情况

               info     普通信息

              debug   调试信息

         当指定了某个级别时,所有级别高于它的信息也会被同时记录。比如,指定 LogLevel info ,则所有notice和warn级别的信息也会被记录。建议至少使用crit级别。

         当错误日志是一个单独分开的正式文件的时候,notice级别的消息总是会被记录下来,而不能被屏蔽。但是,当使用syslog来记录时就没有这个问题。 

17. LogFormat:

         定义访问日志的记录格式。

         语法:LogFormat format|nickname [nickname]

         LogFormat指令可以使用两种定义格式中的一种。

         在第一种格式中,指令只带一个参数,以定义后续的TransferLog指令定义的日志格式。另外它也可以通过下述的方法使用nickname来引用某个之前的LogFormat定义的日志格式。

         第二种定义LogFormat指令的格式中,将一个直接的format和一个nickname联系起来。这样在后续的LogFormat或 CustomLog指令中,就不用一再重复整个冗长的格式串。

         定义别名的LogFormat指令仅仅用来定义一个nickname ,而不做其它任何事情,也就是说,它只是定义了这个别名,它既没有实际应用这个别名,也不是把它设为默认的格式。

         因此,它不会影响后续的 TransferLog指令。另外,LogFormat不能用一个别名来定义另一个别名。nickname不能包含百分号(%)。

         关于format的格式,请参见Apache2.2官方文档中的自定义日志格式小节。

18. CustomLog:

         设定日志的文件名和格式。

         语法:CustomLog file|pipe format|nickname [env=[!]environment-variable]

         第一个参数指定了日志记录的位置,可以使用以下两种方式来设定:

               file  相对于ServerRoot的日志文件名。
               pipe  管道符"|"后面紧跟着一个把日志输出当作标准输入的处理程序路径。

         第二个参数指定了写入日志文件的内容。它既可以是由前面的LogFormat指令定义的nickname ,也可以是直接按Apache2.2官方文档中的自定义日志格式小节所描述的规则定义的format字符串。

         第三个参数是可选的,它根据服务器上特定的环境变量是否被设置来决定是否对某一特定的请求进行日志记录。如果这个特定的环境变量被设置(或者在"env=!name"的情况下未被设置),那么这个请求将被记录。可以使用mod_setenvif和/或mod_rewrite模块来为每个请求设置环境变量。

 19. TransferLog:

        指定日志文件的位置。

        语法:TransferLog file|pipe

         本指令除不允许直接定义日志格式或根据条件进行日志记录外,与CustomLog指令有完全相同的参数和功能。实际应用中,日志的格式是由最近的非别名定义的LogFormat指令指定。如果没有定义任何日志格式,则使用通用日志格式。

 20. Alias:

          映射URL到文件系统的特定区域。

          语法:Alias URL-path file-path|directory-path

          Alias指令使文档可以被存储在DocumentRoot以外的本地文件系统中。以(%已解码的)url-path路径开头的URL可以被映射到以directory-path开头的本地文件。

          如果对在DocumentRoot之外的某个目录建立了一个Alias ,则可能需要通过<Directory>段明确的对目标目录设定访问权限。

21.ScriptAlias:

          映射一个URL到文件系统并视之为CGI脚本目录。

          语法:ScriptAlias URL-path file-path|directory-path

          ScriptAlias指令的行为与Alias指令相同,但同时它又标明此目录中含有应该由cgi-script处理器处理的CGI脚本。以URL-path开头的(%已解码的)的URL会被映射到由第二个参数指定的具有完整路径名的本地文件系统中的脚本。

          ScriptSock:在以线程式MPM(worker)运行的Apache中设置用来与CGI守护进程通信的套接字文件名前缀(其后附加父进程 PID组成完整的文件名)。这个套接字将会用启动Apache服

务器的父进程用户权限(通常是root)打开。为了维护与CGI脚本通讯的安全性,不允许其他用户拥有写入套接字所在目录的权限是很重要的。

 22. DefaultType:

         在服务器无法由其他方法确定内容类型时,发送的默认MIME内容类型。

         语法:DefaultType MIME-type

         默认:DefaultType text/plain

23. AddType:

         在给定的文件扩展名与特定的内容类型之间建立映射关系。

         语法:AddType MIME-type extension [extension] ...

         MIME-type指明了包含extension扩展名的文件的媒体类型。这个映射关系会添加在所有有效的映射关系上,并覆盖所有相同的extension扩展名映射。

         extension参数是不区分大小的,并且可以带或不带前导点。

24. ErrorDocument:

         批示当遇到错误的时候服务器将给客户端什么样的应答。

         语法:ErrorDocument error-code document

         error-code  服务器返回的错误代码

         document  可以由一个斜杠(/)开头来指示一个本地URL(相对于DocumentRoot),或是提供一个能被客户端解释的完整的URL。

         此外还能提供一个可以被浏览器显示的消息。

         比如:

                 ErrorDocument 500http://www.entage.net/err500.html

                 ErrorDocument 404 /errors/bad_urls.html

                 ErrorDocument 403 "Sorry can't allow you access today"

25. EnableMMAP:

          指示httpd在递送中如果需要读取一个文件的内容,它是否可以使用内存映射。

          语法:EnableMMAP On|Off

          当处理一个需要访问文件中的数据的请求时,比如说当递送一个使用mod_include进行服务器端分析的文件时,如果操作系统支持,Apache将默认使用内存映射。

          这种内存映射有时会带来性能的提高,但在某些情况下,您可能会需要禁用内存映射以避免一些操作系统的问题:

          在一些多处理器的系统上,内存映射会减低一些httpd的性能;

          在挂载了NFS的DocumentRoot上,若已经将一个文件进行了内存映射,则删除或截断这个文件会造成httpd因为分段故障而崩溃。

          在可能遇到这些问题的服务器配置过程中,应当使用下面的命令来禁用内存映射:

26. EnableMMAP Off

          对于挂载了NFS的文件夹,可以单独在<directory>段中指定禁用内存映射:

          <Directory "/path-to-nfs-files">
             EnableMMAP Off
          </Directory>

27. EnableSendfile:

          控制httpd是否可以使用操作系统内核的sendfile支持来将文件发送到客户端。

          默认情况下,当处理一个请求并不需要访问文件内部的数据时(比如发送一个静态的文件内容),如果操作系统支持,Apache将使用sendfile将文件内容直接发送到客户端而并不读取文件。

          这个sendfile机制避免了分开的读和写操作以及缓冲区分配,但是在一些平台或者一些文件系统上,最好禁止这个特性来避免一些问题:

                  一些平台可能会有编译系统检测不到的有缺陷的sendfile支持,特别是将在其他平台上使用交叉编译得到的二进制文件运行于当前对sendfile支持有缺陷的平台时;

                  在Linux上启用IPv6时,使用sendfile将会触发某些网卡上的TCP校验和卸载bug;

                  当Linux运行在Itanium处理器上的时候,sendfile可能无法处理大于2GB的文件;

                  对于一个通过网络挂载了NFS文件系统的DocumentRoot (比如:NFS或SMB),内核可能无法可靠的通过自己的缓冲区服务于网络文件。

          如果出现以上情况,你应当禁用sendfile :

            EnableSendfile Off

          针对NFS或SMB,可以单独在<directory>段中指定禁用:

             <Directory "/path-to-nfs-files">
                 EnableSendfile Off
             </Directory>

28. include:

         在服务器配置文件中包含其它配置文件。

         语法:Include file-path|directory-path

         Shell风格(fnmatch())的通配符可以用于按照字母顺序一次包含多个文件。另外,如果Include指向了一个目录而不是一个文件,Apache将读入该目录及其子目录下的所有文件,并依照字母顺序将这些文件作为配置文件进行解析。但是并不推荐这么做,因为偶尔会有临时文件在这个目录中生成,从而导致httpd启动失败。文件的路径可以是一个完整的绝对路径(以一个斜杠开头),或是相对于ServerRoot目录的相对路径。

 29. 设置动态加载的DSO模块

         #如果需要提供基于文本文件的认证,加载此模块,否则注释掉

              LoadModule authn_file_module modules/mod_authn_file.so

         #如果需要提供基于DBM文件的认证,加载此模块,否则注释掉

            #LoadModule authn_dbm_module modules/mod_authn_dbm.so

         #如果需要提供匿名用户认证,加载此模块,否则注释掉

            #LoadModule authn_anon_module modules/mod_authn_anon.so

         #如果需要提供基于SQL数据库的认证,加载此模块,否则注释掉

            #LoadModule authn_dbd_module modules/mod_authn_dbd.so

         #如果需要在未正确配置认证模块的情况下简单拒绝一切认证信息,加载此模块,否则注释掉

              LoadModule authn_default_module modules/mod_authn_default.so

         #此模块提供基于主机名、IP地址、请求特征的访问控制,Allow、Deny指令需要,推荐加载。

              LoadModule authz_host_module modules/mod_authz_host.so

         #如果需要使用纯文本文件为组提供授权支持,加载此模块,否则注释掉

            #LoadModule authz_groupfile_module modules/mod_authz_groupfile.so

         #如果需要提供基于每个用户的授权支持,加载此模块,否则注释掉

              LoadModule authz_user_module modules/mod_authz_user.so

         #如果需要使用DBM文件为组提供授权支持,加载此模块,否则注释掉

            #LoadModule authz_dbm_module modules/mod_authz_dbm.so

         #如果需要基于文件的所有者进行授权,加载此模块,否则注释掉

            #LoadModule authz_owner_module modules/mod_authz_owner.so

         #如果需要在未正确配置授权支持模块的情况下简单拒绝一切授权请求,加载此模块,否则注释掉

              LoadModule authz_default_module modules/mod_authz_default.so

         #如果需要提供基本的HTTP认证,加载此模块,否则注释掉,此模块至少需要同时加载一个认证支持模块和一个授权支持模块

              LoadModule auth_basic_module modules/mod_auth_basic.so

         #如果需要提供HTTP MD5摘要认证,加载此模块,否则注释掉,此模块至少需要同时加载一个认证支持模块和一个授权支持模块

            #LoadModule auth_digest_module modules/mod_auth_digest.so

         #此模块提供文件描述符缓存支持,从而提高Apache性能,推荐加载,但请小心使用

              LoadModule file_cache_module modules/mod_file_cache.so

         #此模块提供基于URI键的内容动态缓存(内存或磁盘),从而提高Apache性能,必须与mod_disk_cache/mod_mem_cache同时使用,推荐加载

              LoadModule cache_module modules/mod_cache.so

         #此模块为mod_cache提供基于磁盘的缓存管理,推荐加载

              LoadModule disk_cache_module modules/mod_disk_cache.so

         #此模块为mod_cache提供基于内存的缓存管理,推荐加载

              LoadModule mem_cache_module modules/mod_mem_cache.so

         #如果需要管理SQL数据库连接,为需要数据库功能的模块提供支持,加载此模块,否则注释掉(推荐)

            #LoadModule dbd_module modules/mod_dbd.so

         #此模块将所有I/O操作转储到错误日志中,会导致在日志中写入及其海量的数据,只建议在发现问题并进行调试的时候使用

            #LoadModule dumpio_module modules/mod_dumpio.so

         #如果需要使用外部程序作为过滤器,加载此模块(不推荐),否则注释掉

            #LoadModule ext_filter_module modules/mod_ext_filter.so

         #如果需要实现服务端包含文档(SSI)处理,加载此模块(不推荐),否则注释掉

            #LoadModule include_module modules/mod_include.so

         #如果需要根据上下文实际情况对输出过滤器进行动态配置,加载此模块,否则注释掉

              LoadModule filter_module modules/mod_filter.so

         #如果需要服务器在将输出内容发送到客户端以前进行压缩以节约带宽,加载此模块(推荐),否则注释掉

              LoadModule deflate_module modules/mod_deflate.so

         #如果需要记录日志和定制日志文件格式,加载此模块(推荐),否则注释掉

              LoadModule log_config_module modules/mod_log_config.so

         #如果需要对每个请求的输入/输出字节数以及HTTP头进行日志记录,加载此模块,否则注释掉

            #LoadModule logio_module modules/mod_logio.so

         #如果允许Apache修改或清除传送到CGI脚本和SSI页面的环境变量,加载此模块,否则注释掉

              LoadModule env_module modules/mod_env.so

         #如果允许通过配置文件控制HTTP的"Expires:"和"Cache-Control:"头内容,加载此模块(推荐),否则注释掉

              LoadModule expires_module modules/mod_expires.so

         #如果允许通过配置文件控制任意的HTTP请求和应答头信息,加载此模块,否则注释掉

              LoadModule headers_module modules/mod_headers.so

         #如果需要实现RFC1413规定的ident查找,加载此模块(不推荐),否则注释掉

            #LoadModule ident_module modules/mod_ident.so

         #如果需要根据客户端请求头字段设置环境变量,加载此模块,否则注释掉

              LoadModule setenvif_module modules/mod_setenvif.so

         #此模块是mod_proxy的扩展,提供Apache JServ Protocol支持,只在必要时加载

            #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

         #此模块是mod_proxy的扩展,提供负载均衡支持,只在必要时加载

            #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

         #如果需要根据文件扩展名决定应答的行为(处理器/过滤器)和内容(MIME类型/语言/字符集/编码),加载此模块,否则注释掉

              LoadModule mime_module modules/mod_mime.so

         #如果允许Apache提供DAV协议支持,加载此模块,否则注释掉

            #LoadModule dav_module modules/mod_dav.so

         #此模块生成描述服务器状态的Web页面,只建议在追踪服务器性能和问题时加载

            #LoadModule status_module modules/mod_status.so

        #如果需要自动对目录中的内容生成列表(类似于"ls"或"dir"命令),加载此模块(会带来安全问题,不推荐),否则注释掉

            #LoadModule autoindex_module modules/mod_autoindex.so

        #如果需要服务器发送自己包含HTTP头内容的文件,加载此模块,否则注释掉

           #LoadModule asis_module modules/mod_asis.so

        #如果需要生成Apache配置情况的Web页面,加载此模块(会带来安全问题,不推荐),否则注释掉

           #LoadModule info_module modules/mod_info.so

       #如果需要在非线程型MPM(prefork)上提供对CGI脚本执行的支持,加载此模块,否则注释掉

           #LoadModule cgi_module modules/mod_cgi.so

       #此模块在线程型MPM(worker)上用一个外部CGI守护进程执行CGI脚本,如果正在多线程模式下使用CGI程序,推荐替换mod_cgi加载,否则注释掉

           #LoadModule cgid_module modules/mod_cgid.so

       #此模块为mod_dav访问服务器上的文件系统提供支持,如果加载mod_dav,则也应加载此模块,否则注释掉

           #LoadModule dav_fs_module modules/mod_dav_fs.so

       #如果需要提供大批量虚拟主机的动态配置支持,加载此模块,否则注释掉

           #LoadModule vhost_alias_module modules/mod_vhost_alias.so

       #如果需要提供内容协商支持(从几个有效文档中选择一个最匹配客户端要求的文档),加载此模块(推荐),否则注释掉

             LoadModule negotiation_module modules/mod_negotiation.so

       #如果需要指定目录索引文件以及为目录提供"尾斜杠"重定向,加载此模块(推荐),否则注释掉

             LoadModule dir_module modules/mod_dir.so

       #如果需要处理服务器端图像映射,加载此模块,否则注释掉

            #LoadModule imagemap_module modules/mod_imagemap.so

       #如果需要针对特定的媒体类型或请求方法执行CGI脚本,加载此模块,否则注释掉

            #LoadModule actions_module modules/mod_actions.so

       #如果希望服务器自动纠正URL中的拼写错误,加载此模块(推荐),否则注释掉

              LoadModule speling_module modules/mod_speling.so

        #如果允许在URL中通过"/~username"形式从用户自己的主目录中提供页面,加载此模块,否则注释掉

            #LoadModule userdir_module modules/mod_userdir.so

        #此模块提供从文件系统的不同部分到文档树的映射和URL重定向,推荐加载

              LoadModule alias_module modules/mod_alias.so

        #如果需要基于一定规则实时重写URL请求,加载此模块(推荐),否则注释掉

              LoadModule rewrite_module modules/mod_rewrite.so

 

       #设置DocumentRoot指定目录的属性

              <Directory "/usr/local/apache-2.2.6/htdocs">

                 Options FollowSymLinks

                 AllowOverride None

                 Order allow,deny

                 Allow from all

             </Directory>

 

      #设置默认目录资源列表文件

             <IfModule dir_module>

                DirectoryIndex index.html

             </IfModule>

 

      #拒绝对.ht开头文件的访问,以保护.htaccess文件

             <FilesMatch "^.ht">

                Order allow,deny

                Deny from all

                Satisfy All

             </FilesMatch>


             <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

               <IfModule logio_module>

                    LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio

               </IfModule>

               #指定访问日志及使用的格式

              CustomLog logs/access_log combined

            </IfModule>

 

         #设定默认CGI脚本目录及别名

             ScriptAlias /cgi-bin/ "/usr/local/apache-2.2.6/cgi-bin/"


         #在以线程式MPM(worker)运行的Apache中设置用来与CGI守护进程通信的套接字文件名前缀

            <IfModule cgid_module>

                 Scriptsock logs/cgisock

            </IfModule>

 

         #设定默认CGI脚本目录的属性

              <Directory "/usr/local/apache-2.2.6/cgi-bin">

                AllowOverride None

                Options None

                Order allow,deny

                Allow from all

              </Directory>

 

        #设定默认MIME内容类型

              DefaultType text/plain

              <IfModule mime_module>

                 #指定MIME类型映射文件

                TypesConfig conf/mime.types

                #增加.Z .tgz的类型映射

                AddType application/x-compress .Z

                AddType application/x-gzip .gz .tgz

             </IfModule>

 

        #启用内存映射

             EnableMMAP on

        #使用操作系统内核的sendfile支持来将文件发送到客户端

             EnableSendfile on

        #指定多路处理模块(MPM)配置文件并将其附加到主配置文件

             Include conf/extra/httpd-mpm.conf

        #指定多语言错误应答配置文件并将其附加到主配置文件

             Include conf/extra/httpd-multilang-errordoc.conf

        #指定目录列表配置文件并将其附加到主配置文件

            #Include conf/extra/httpd-autoindex.conf

        #指定语言配置文件并将其附加到主配置文件

              Include conf/extra/httpd-languages.conf

        #指定用户主目录配置文件并将其附加到主配置文件

            #Include conf/extra/httpd-userdir.conf

        #指定用于服务器信息和状态显示的配置文件并将其附加到主配置文件

            #Include conf/extra/httpd-info.conf

        #指定提供Apache文档访问的配置文件并将其附加到配置文件

            #Include conf/extra/httpd-manual.conf

        #指定DAV配置文件并将其附加到主配置文件

            #Include conf/extra/httpd-dav.conf

        #指定与Apache服务自身相关的配置文件并将其附加到主配置文件

              Include conf/extra/httpd-default.conf

        #指定mod_deflate压缩模块配置文件并将其附加到主配置文件

              Include conf/extra/httpd-deflate.conf

        #指定mod_expires模块配置文件并将其附加到主配置文件

              Include conf/extra/httpd-expires.conf

        #指定虚拟主机配置文件并将其附加到主配置文件

             #Include conf/extra/httpd-vhosts.conf

        #指定SSL配置文件并将其附加到主配置文件

               Include conf/extra/httpd-ssl.conf

        #SSL默认配置

              <IfModule ssl_module>

                    SSLRandomSeed startup builtin

                    SSLRandomSeed connect builtin

              </IfModule>