第一部分  全局配置

### 此份配置同时适用于Windows(开发环境)和Linux(产品环境),依靠MPM的不同进行区分

##########################################################################################
####   第一部分  全局配置 [这些指令的作用域含有"server config"但不含"virtual host"]  #####
##########################################################################################

#####################################################################
##### MPM 指令(所有MPM指令都仅能用于全局配置) #####

##### prefork 与 mpm_winnt 的公共指令

  #内核转储目录(Linux上Apache以root身份启动并切换至其他用户,再忽略该指令可以禁止内核转储)
  #CoreDumpDirectory /share/empty

  #在所有IP上监听80端口的HTTP协议
   Listen 80 http

  #半链接队列的最大长度,不能设的太大,而应当通过启用SYN-Cookie抵御SYN洪水。
   ListenBacklog 255

  #主内存分配程序在未调用free()的情况下允许持有的最大自由内存数量(默认"0"表示无限制)
   MaxMemFree 0

  #将每个子进程在其生存期内允许伺服的最大请求数量设为有限值,可以防止(偶然的)内存泄漏无限进行,有助于当服务器负载减轻的时候减少活动进程的数量
   MaxRequestsPerChild 10000

  #记录父进程(监控进程)PID的文件
<IfModule mpm_winnt_module>
   PidFile log/httpd.pid
< /IfModule>
< IfModule mpm_prefork_module>
   PidFile /var/run/httpd.pid
< /IfModule>

  #TCP接收缓冲区大小(相当于8帧,如果不用http上传可减小到4帧)
   ReceiveBufferSize 11840
  #TCP发送缓冲区大小(相当于8帧,一般比最常用页面压缩后的平均尺寸稍大)
   SendBufferSize 11840

  #父进程和子进程之间通信使用的计分板,建议不要设置以首选在匿名共享内存中建立
  #ScoreBoardFile /tmp/httpd_status

##### mpm_winnt 特有指令
<IfModule mpm_winnt_module>
  #每个子进程可配置的线程数上限,应当和ThreadsPerChild可能达到的最大值保持一致
   ThreadLimit 5
  #每个子进程建立的线程数(必须小于等于ThreadLimit)
   ThreadsPerChild 5

  #处理客户端连接的线程使用的栈尺寸(65536字节),注释掉以后将使用操作系统默认值
  #ThreadStackSize 65536

  #仅在其他软件干扰AcceptEx()操作时才使用这个
  #Win32DisableAcceptEx
< /IfModule>

##### prefork 特有指令
<IfModule mpm_prefork_module>
  #串行化多个子进程在多个socket上accept()请求的方法(仅在使用了多个Listen指令时候才有意义)
  #建议在 Linux 2.6 内核并且 Glibc 中包含NPTL时使用posixsem选项
  #当然,为了得到最佳性能,最好就根本不使用多个Listen语句。
   AcceptMutex posixsem
  #当AcceptMutex指令的值是fcntl或flock的时候,Apache使用的锁文件的位置(最好放在TMPFS中)
  #其他用户可以通过建立一个同名文件来阻止服务器启动,以造成拒绝服务攻击
   LockFile /tmp/httpd_accept.lock

  #子进程崩溃以后进行异常处理的钩子程序
   EnableExceptionHook Off

  #优雅停止服务器的超时秒数(5分钟)
   GracefulShutDownTimeout 300

  #子进程运行时的组
   Group www
  #子进程运行时的用户
   User httpd

  #允许同时伺服的最大接入请求数量(用于应对潜在的请求高峰)
  #建议设为与postgresql的max_connections值相等(假定每个接入请求平均使用一个数据库链接)
   MaxClients 1000
  #服务器允许配置的进程数上限(保持和MaxClient相等)
   ServerLimit 1000
  #服务器启动时建立的子进程数
   StartServers 30
  #空闲子进程的最大数量(用于应对潜在的请求高峰)
   MaxSpareServers 30
  #空闲子进程的最小数量
   MinSpareServers 15
< /IfModule>

#####################################################################
##### mod_so指令(一共只有两条Load..指令,且仅能用于全局配置) #####

< IfModule mpm_winnt_module>
#由于Linux已将下列模块静态编译进了httpd,因此不需要动态加载(PHP除外)
#特别提醒:Windows加载了mod_info/mod_status/mod_bw而Linux没有加载。

  #基于文件的摘要认证和基于用户的授权以及访问控制
   LoadModule auth_digest_module bin/mod_auth_digest.so
   LoadModule authn_default_module bin/mod_authn_default.so
   LoadModule authn_file_module bin/mod_authn_file.so
   LoadModule authz_default_module bin/mod_authz_default.so
   LoadModule authz_user_module bin/mod_authz_user.so
   LoadModule authz_host_module bin/mod_authz_host.so

  #对输出内容(一般是文本)进行压缩
   LoadFile   bin/zlib1.dll
   LoadModule deflate_module bin/mod_deflate.so

  #指定目录索引文件以及为目录提供"尾斜杠"重定向(仅供phppgadmin使用)
   LoadModule dir_module bin/mod_dir.so

  #环境变量控制
   LoadModule env_module bin/mod_env.so
   LoadModule setenvif_module bin/mod_setenvif.so

  #通过配置文件控制"Expires:"和"Cache-Control:"头内容
   LoadModule expires_module bin/mod_expires.so

  #记录日志和定制日志格式
   LoadModule log_config_module bin/mod_log_config.so

  # MIME模块(PHP依赖于此模块)
   LoadModule mime_module       bin/mod_mime.so

  #实时重写URL请求
   LoadModule rewrite_module bin/mod_rewrite.so

  #生成Apache配置情况的Web页面
   LoadModule info_module bin/mod_info.so
  #生成描述服务器状态的Web页面
   LoadModule status_module bin/mod_status.so
  #限制客户端带宽(用于模拟低速internet环境)[Http://apache.ivn.cl]
   #LoadModule bw_module bin/mod_bw.so
< /IfModule>

##### 添加PHP5支持
<IfModule mpm_winnt_module>
   LoadFile   php/php5ts.dll
   LoadModule php5_module  php/php5apache2_2.dll
   PHPINIDir  php
< /IfModule>
< IfModule mpm_prefork_module>
   LoadModule php5_module  /lib/httpd/libphp5.so
   PHPINIDir  /etc/httpd
< /IfModule>
   AddType  application/x-httpd-php  .php .htm

#####################################################################
##### 仅能够用于全局配置的核心(Core)指令 #####

#根据协议类型对监听Socket进行优化
#AcceptFilter http data
#AcceptFilter https data

#限制客户端HTTP请求头域的数量
LimitRequestFields 20
#限制客户端HTTP请求头的字节数
LimitRequestFieldSize 3000
#限制客户端HTTP请求行的字节数
LimitRequestLine 1020

#为虚拟主机在所有IP地址上监听80
NameVirtualHost *:80

#服务器根目录(必须是绝对路径),配置文件中的其它相对路径都将基于此目录
<IfModule mpm_winnt_module>
ServerRoot /GreenAPP/Apache
< /IfModule>
< IfModule mpm_prefork_module>
ServerRoot /share/empty
< /IfModule>

#"Server:"应答头(Prod最少,Full最多)
ServerTokens Prod

#服务器超时
TimeOut 15

#禁止处理TRACE请求
TraceEnable off

#####################################################################
##### 仅能够用于全局配置的动态加载模块指令 #####

# mime.types文件的位置(mod_mime)
< IfModule mpm_winnt_module>
TypesConfig conf/mime.types
< /IfModule>
< IfModule mpm_prefork_module>
TypesConfig /etc/httpd/mime.types
< /IfModule>

#检查服务器发送的 nonce 计数(尚未实现)(mod_auth_digest)
#AuthDigestNcCheck On

#为了跟踪客户端而分配的共享内存字节数(mod_auth_digest),每链接需要128字节。
AuthDigestShmemSize 25600

#禁止在内存中缓冲日志(mod_log_config)
BufferedLogs Off

#为了和RewriteMap*程序*通讯而使用的同步锁文件的名称(mod_rewrite)
#RewriteLock file-path

< IfModule status_module>
  #为每个请求记录扩展的状态信息
   ExtendedStatus On
< /IfModule>

第二部分  主服务器配置

################################################################################################
####   第二部分  主服务器配置[这些指令的作用域含同时含有"server config"和"virtual host"]   #####
################################################################################################
## 本配置文件将所有主机都当作虚拟主机,并不存在真正的"主服务器",因此这部分配置只是所有虚拟主机的默认设置而已 ##

#####################################################################
##### 适用于主服务器配置的核心(Core)指令 #####

#### 虚拟主机必须重新设定的指令

  #文档树的根目录(没有真正的主服务器,因此不设置此值)(不能包含结尾斜杠)
  #DocumentRoot directory-path
  #当没有指定ServerName时,服务器会尝试对IP地址进行反向查询来推断主机名。
  #所以,必须胡乱设置一个默认的主服务器主机名
   ServerName xx.xx.xx.xx

#### 目录相关

  #分布式配置文件的名字
   AccessFileName .htaccess
  #目录仅可以使用符号链接的特性
   Options FollowSymLinks

#### 应答头相关

  #当应答内容是text/plain或text/html时在HTTP应答头中加入的默认字符集
   AddDefaultCharset utf-8
  #无法由其他方法确定内容类型时,发送的默认MIME内容类型
   DefaultType application/octet-stream
  #禁止生成Content-MD5应答头
   ContentDigest Off
  #用以创建ETag应答头的文件的属性
   FileETag All

#### 貌似安全相关

  #仅当一个请求映射到一个真实存在的路径时才会被接受
   AcceptPathInfo Off
  #禁止URL中使用经过编码的路径分割符
   AllowEncodedSlashes Off

  #指定内部重定向和嵌套子请求的最大数量(至少是5)
   LimitInternalRecursion 10
  #限制客户端发送的HTTP请求体的最大字节长度(1.2M)
   LimitRequestBody 1300000
  #限制基于XML的请求体的最大字节长度(1.2M)
   LimitXMLRequestBody 1300000

< IfModule mpm_prefork_module>
  #限制Apache子进程派生的进程占用CPU的最大秒数
   RLimitCPU 1 1
  #限制由Apache子进程派生的进程占用的最大内存字节数
   RLimitMEM 1 1
  #限制由Apache子进程派生的进程所派生的进程数目
   RLimitNPROC 0 1
< /IfModule>

  #禁止生成服务器端生成文档的页脚
   ServerSignature Off

#### 性能相关

  #在递送中使用内存映射来读取文件(某些情况下需要禁用)
   EnableMMAP On
  #使用操作系统内核的sendfile支持来将文件发送到客户端
   EnableSendfile On
  #禁用对客户端IP的DNS查找
   HostnameLookups Off
  #持久链接(禁用)
   KeepAlive Off
   KeepAliveTimeout 1
   MaxKeepAliveRequests 1

#### 错误应答与错误日志

  #自定义错误响应
  #400 错误的请求
   ErrorDocument 400 /error/http|ErrCode=400.htm
  #403 禁止访问
   ErrorDocument 403 /error/http|ErrCode=403.htm
  #404 未找到
   ErrorDocument 404 /error/http|ErrCode=404.htm
  #405 方法不被允许
   ErrorDocument 405 /error/http|ErrCode=405.htm
  #406 资源已经找到但MIME类型与Accpet头中所指不兼容
   ErrorDocument 406 /error/http|ErrCode=406.htm
  #408 在服务器许可的等待时间内客户一直没有发出任何请求
   ErrorDocument 408 /error/http|ErrCode=408.htm
  #409 由于请求和资源的当前状态相冲突因此不能成功(通常和PUT有关)
   ErrorDocument 409 /error/http|ErrCode=409.htm
  #410 所请求的文档已经不再可用而且服务器不知道应该重定向到哪一个地址
   ErrorDocument 410 /error/http|ErrCode=410.htm
  #411 必须发送Content-Length头否则无法处理
   ErrorDocument 411 /error/http|ErrCode=411.htm
  #412 指定的一些前提条件失败
   ErrorDocument 411 /error/http|ErrCode=412.htm
  #413 请求实体太大
   ErrorDocument 413 /error/http|ErrCode=413.htm
  #414 请求URI太长
   ErrorDocument 414 /error/http|ErrCode=414.htm
  #415 不支持的MIME类型
   ErrorDocument 415 /error/http|ErrCode=415.htm
  #416 Range头所请求的范围无法满足
   ErrorDocument 416 /error/http|ErrCode=416.htm
  #417 执行失败
   ErrorDocument 417 /error/http|ErrCode=417.htm
  #423 锁定的错误
   ErrorDocument 423 /error/http|ErrCode=423.htm
  #500 内部服务器错误
   ErrorDocument 500 /error/http|ErrCode=500.htm
  #501 服务器不支持实现请求所需要的功能
   ErrorDocument 501 /error/http|ErrCode=501.htm
  #502 服务器用作网关或代理服务器时收到了无效响应
   ErrorDocument 502 /error/http|ErrCode=502.htm
  #503 服务器由于维护或者负载过重暂时不能提供服务
   ErrorDocument 503 /error/http|ErrCode=503.htm
  #504 不能及时地从远程服务器获得应答(作为代理或网关的服务器)
   ErrorDocument 504 /error/http|ErrCode=504.htm
  #505 服务器不支持请求中所指明的HTTP版本
  #ErrorDocument 505 /error/http|ErrCode=505.htm

  #返回给客户端的错误信息中包含的管理员邮件地址
   ServerAdmin webmaster@oklaoshi.org

  #错误日志(未使用滚动)
< IfModule mpm_winnt_module>
   ErrorLog log/error.log
   LogLevel info
< /IfModule>
< IfModule mpm_prefork_module>
   ErrorLog /var/log/httpd/error.log
   LogLevel warn
< /IfModule>

#### 处理器

<IfModule mpm_winnt_module>
  #定位CGI脚本解释器(仅用于Win32)
   ScriptInterpreterSource Script
< /IfModule>

  #强制所有匹配的文件被一个指定的处理器处理
  #SetHandler handler-name|None

#### 输入输出过滤器

  #压缩输出所有文本内容(目前反对使用该指令,但因其简单故而使用)
   AddOutputFilterByType  DEFLATE  application/x-javascript application/xhtml+xml application/xslt+xml application/xml application/xml-dtd text/css text/html text/plain text/richtext text/rtf text/xml

  #设置处理客户端请求和POST输入时使用的过滤器
  #SetInputFilter filter[;filter...]
  #设置用于处理服务器输出应答的过滤器
  #SetOutputFilter filter[;filter...]

#### 规范化

  #使用客户端提供的主机名和端口构建自引用URL
  #可以巧妙解决双线机房以及同目录多站点的问题 #还可以巧妙解决同时运行产品环境和开发环境的问题(本配置未使用该技巧)
   UseCanonicalName Off
   UseCanonicalPhysicalPort Off
   
   
#####################################################################
##### 适用于主服务器配置的动态加载模(DSO)块指令 #####

#### mod_deflate ####

  #用于zlib一次压缩的片断大小(字节)(20K),一般等于较大页面的大小
   DeflateBufferSize 20240
  #压缩程度,取值范围在 1(最低压缩率) 到 9(最高压缩率)之间
   DeflateCompressionLevel 3
  #在日志中将一个指示压缩率标记附加在请求之后(关闭)
  #DeflateFilterNote Input instream
  #DeflateFilterNote Output outstream
  #DeflateFilterNote Ratio ratio
  #压缩时最多可以使用多少内存(取值范围在1到9之间)
   DeflateMemLevel 9
  #压缩窗口的大小(取值范围在1到15之间,越大压缩效果越好)
   DeflateWindowSize 15

  #目录结尾斜线(/)自动补全功能(通过重定向,强烈建议打开)
  #默认的目录索引文件(强烈建议按此顺序设置)
< IfModule mpm_prefork_module>
   DirectorySlash On
   DirectoryIndex index.html index.htm index.php
< /IfModule>
< IfModule mpm_winnt_module>
   DirectorySlash Off
   DirectoryIndex none
< /IfModule>

#### mod_env #####
#### mod_setenvif #####

  #传送shell中的环境变量
  #PassEnv env-variable [env-variable] ...
  #强制gzip输出[建议不要这样,会让机器人头晕]
  #SetEnv   force-gzip 1
  #删除环境变量(默认不记录任何访问日志)
   UnsetEnv AccessLog
  #根据客户端请求属性设置环境变量(仅记录对txt/php/html的访问)
   SetEnvIf Request_URI  "\.(txt|php|html?)$"  AccessLog=1

##### mod_expires #####

  #启用"Expires:"和"Cache-Control:"头
   ExpiresActive On
  #由MIME类型配置的Expires头的值
  #ExpiresByType MIME-type <code>seconds
  #默认所有文档的有效期为30天
    ExpiresDefault "access plus 30 days"
  #但是php文档默认不存在有效期(随后应当根据实际情况详细设置)
  <Files *.php>
    ExpiresActive Off
  </Files>

##### mod_log_config #####

  #访问日志(虚拟主机+组合日志格式)(有条件的记录)
< IfModule mpm_winnt_module>
   CustomLog log/access.log "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" env=AccessLog
< /IfModule>
< IfModule mpm_prefork_module>
   CustomLog /var/log/httpd/access.log "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" env=AccessLog
< /IfModule>

##### mod_mime #####

  #在文件扩展名与特定的编码方式之间建立映射关系
  #AddEncoding MIME-enc extension [extension] ...
  #将所有 .html.gz .css.gz 之类经过压缩的静态内容使用"Content-Encoding: gzip"头发送,
  #这样既节约带宽又比使用mod_deflate的实时压缩节约CPU
  #但只适用于静态内容并且要结合内容协商模块的类型表功能才能实现,而且不利于搜索引擎机器人收录,
  #考虑到mod_expires的作用,这份配置放弃这种方法
  #不过这样也可能和 AddOutputFilterByType  DEFLATE .... 指令冲突,需要进一步实验或寻找其他有效方法
  #AddEncoding gzip .gz

  #为所有文件设定特定的默认语言(简体中文)
   DefaultLanguage zh-CN

  #在使用MultiViews查询所匹配的文件时要包含的文件类型
  #NegotiatedOnly选项规定每个跟在基础名字后面的扩展名必须关联到一个在内容协商时已知的mod_mime扩展名,
  #例如:字符集、内容类型、语言、编码方式。这是一种最严格也是副作用最少的实现方法,它是默认的处理方式。
   MultiviewsMatch NegotiatedOnly

  #在给定的文件扩展名与特定的字符集之间建立映射
  #AddCharset charset extension [extension] ...
  #在文件扩展名与特定的语言之间建立映射
  #AddLanguage MIME-lang extension [extension] ...
  #在文件扩展名与特定的处理器之间建立映射
  #AddHandler handler-name extension [extension] ...
  #在文件扩展名与特定的输入过滤器之间建立映射
  #AddInputFilter filter[;filter...] extension [extension] ...
  #在文件扩展名与特定的输出过滤器之间建立映射关系
  #AddOutputFilter filter[;filter...] extension [extension] ...
  #在给定的文件扩展名与特定的内容类型之间建立映射
  #AddType MIME-type extension [extension] ...

##### mod_rewrite #####

  #关闭重写引擎(不可继承,必须在每个需要的虚拟主机中单独开启)
   RewriteEngine Off
  #重写引擎日志的详细程度(9-最详细,0-关闭)
   RewriteLogLevel 0
  #强制当前配置继承其父配置(映射表、条件、规则)
  #RewriteOptions inherit

  #定义重写发生的条件(为了提高匹配效率)和规则(不需要考虑#..内容,因为浏览器并不发送)
   RewriteCond  %{REQUEST_URI}  \.htm$
   RewriteRule  ^(.+)\.htm$             $1.php       [NE,C]
   RewriteRule  ^([^|]+)\|(.+)\.php$    $1.php?$2    [NE,L]

< IfModule info_module>
  #为server-info处理器显示的模块增加额外信息
  #AddModuleInfo module-name string
< /IfModule>

< IfModule bw_module>
  #开启带宽限制(默认是关闭的,也就是不做任何限制)
   BandWidthModule On
  #强制对所有请求进行限制
   ForceBandWidthModule On
  #连接数上限。必须与BandWidth的子网范围对应,当然也可以不使用该指令。
   MaxConnection 127.0.0.0/8     2
  #带宽上限(B/s)。这里限制为16Kbps
   BandWidth 127.0.0.0/8     2048
  #带宽下限(B/s),设为"-1"表示仅使用上限。
   MinBandWidth all -1
  #将数据包分割成每小块1024字节进行延迟发送,可用值为1024-131072,默认为8192。
   BandWidthPacket 1024
  #将所有大于50kB的文件下载速度限制压低到8Kbps
  #LargeFileLimit * 50 1024
  #默认到达MaxConnection限制后将发送"503"错误代码(HTTP_SERVICE_UNAVAILABLE),
  #该指令允许你自定义一个未使用的错误代码(300~599)并结合ErrorDocument指令实现自定义的错误代码说明。
  #BandWidthError 510
< /IfModule>

第三部分  默认目录特性/认证/授权/访问控制

################################################################################################
####   第三部分  默认目录特性/认证/授权/访问控制[这些指令的作用域含有"directory"]   #####
################################################################################################
## 默认特性穷尽限制与封闭之能事,因此必须在随后的配置中按需"放水" ##
## 此部分并不包含所有作用域含有"directory"的指令 ##

< Directory />
  #禁用.htaccess文件(仅可用于目录)
   AllowOverride None
  #目录仅可以使用符号链接的特性(仅可用于目录)
   Options FollowSymLinks
  #必须同时通过认证并且满足访问控制条件
   Satisfy all
  #使用摘要认证
   AuthType Digest
   AuthDigestAlgorithm MD5
   AuthDigestNonceLifetime 1200
   AuthDigestQop auth
   AuthDigestProvider file
   AuthDefaultAuthoritative On
  #所有认证共用一个用户名/密码文件
<IfModule mpm_winnt_module>
   AuthUserFile conf/authn.md5
< /IfModule>
< IfModule mpm_prefork_module>
   AuthUserFile /etc/httpd/authn.md5
< /IfModule>
   AuthzUserAuthoritative On
   AuthzDefaultAuthoritative On
  #拒绝所有访问(mod_authz_host)
  #Allow from 127.0.0.1
   Deny from all
   Order Allow,Deny
< /Directory>

#因为<DirectoryMatch>在所有<Directory>之后合并,所以下面可以确保拒绝访问任何"secret"目录
<DirectoryMatch /secret/>
   AllowOverride None
   Options FollowSymLinks
   Satisfy all
   Deny from all
   Order Allow,Deny
< /DirectoryMatch>

##下面是一段非常愚蠢的做法,完全推翻了上述默认的访问控制,因为<Location>在最后合并
##实际效果变成允许GET和POST访问一切目录和文件!!!
#<Location />
#企图仅仅允许GET和POST方法(实际上行不通)
#<LimitExcept GET POST>
#  Order Allow,Deny
#  Deny from all
#</LimitExcept>
#</Location>

############################################################################
####   第四部分  默认虚拟主机[这些指令的作用域都含有"virtual host"]   #####
############################################################################

< VirtualHost *:80>
#(共享服务器,存放与特定子站无关或无法在子站内部统一的内容)
  #文档树根目录、主机名和别名
   DocumentRoot /www/oklaoshi/www
    ServerName   oklaoshi.org
    ServerAlias  oklaoshi.net oklaoshi.com oklaoshi.cn
    ServerAlias  www.oklaoshi.org www.oklaoshi.net   www.oklaoshi.com www.oklaoshi.cn

    #开启重写引擎并继承主服务器配置(映射表、条件、规则)
     RewriteEngine On
     RewriteOptions inherit

    #传送shell中指定的加密密钥(最好只传递到特定目录下的特定文件)
    #PassEnv ENCRYPT_KEY

    #重新设置PHP针对每个站点的不同特性
     php_admin_value open_basedir  "/www/oklaoshi/"
     php_admin_flag  file_uploads Off
     php_admin_value include_path  "/www/oklaoshi/secret"
     php_admin_value session.name  "OKLAOSHISESSIONID"
     php_admin_value session.referer_check  "oklaoshi."

    #默认为非本地引用
     UnsetEnv  Local_Referer
    #判断是否为本地引用
     SetEnvIf Referer "oklaoshi\.(org|net|com|cn)" Local_Referer

  <Directory   "/www/oklaoshi/www">
      Order Allow,Deny
      Allow from all
    #防止盗链(必须放在<Directory>内部)
    <FilesMatch "\.(js|css|gif|jpe?g|png|swf)$">
      Order Allow,Deny
      Allow from env=Local_Referer
    </FilesMatch>
  </Directory>

#### 下面的指令只能在虚拟主机中设置
  #删除任何给定的扩展名与内容字符集之间的关联
  #RemoveCharset extension [extension] ...
  #删除任何给定的扩展名与内容编码方式之间的关联
  #RemoveEncoding extension [extension] ...
  #删除任何指定扩展名与处理器之间的关联
  #RemoveHandler extension [extension] ...
  #删除指定扩展名与输入过滤器之间的关联
  #RemoveInputFilter extension [extension] ...
  #删除指定的扩展名与内容语言之间的关联
  #RemoveLanguage extension [extension] ...
  #删除指定扩展名与输出过滤器之间的关联
  #RemoveOutputFilter extension [extension] ...
  #删除指定扩展名与内容类型之间的关联
  #RemoveType extension [extension] ...

## 服务器配置报告
  <IfModule info_module>
  <Location /server-info>
    SetHandler server-info
    AuthName Apache_Admin
    Require user Apache_Admin
    Satisfy all
    Order Allow,Deny
    Allow from all
  </Location>
  </IfModule>

## 服务器状态报告
  <IfModule status_module>
  <Location /server-status>
    SetHandler server-status
    AuthName Apache_Admin
    Require user Apache_Admin
    Satisfy all
    Order Allow,Deny
    Allow from all
  </Location>
  </IfModule>

< /VirtualHost>

############################################################################
####   第四部分  其它虚拟主机   #####
############################################################################

< VirtualHost *:80>

  #文档树根目录、主机名和别名(与"主服务器"设为相同即可取消"主服务器")(.org/.net电信 .com/.cn网通)(其他是各地分站)
   DocumentRoot /www/oklaoshi/htdocs
    ServerName   bj.oklaoshi.org
    ServerAlias                   bj.oklaoshi.net    bj.oklaoshi.com  bj.oklaoshi.cn
    ServerAlias  tj.oklaoshi.org  tj.oklaoshi.net    tj.oklaoshi.com  tj.oklaoshi.cn
    ServerAlias  sh.oklaoshi.org  sh.oklaoshi.net    sh.oklaoshi.com  sh.oklaoshi.cn
    ServerAlias  nj.oklaoshi.org  nj.oklaoshi.net    nj.oklaoshi.com  nj.oklaoshi.cn
    ServerAlias  gz.oklaoshi.org  gz.oklaoshi.net    gz.oklaoshi.com  gz.oklaoshi.cn

    #开启重写引擎并继承主服务器配置(映射表、条件、规则)
     RewriteEngine On
     RewriteOptions inherit

    #传送shell中指定的加密密钥(最好只传递到特定目录下的特定文件)
     PassEnv ENCRYPT_KEY

    #重新设置PHP针对每个站点的不同特性
     php_admin_value open_basedir  "/www/oklaoshi/"
     php_admin_flag  file_uploads Off
     php_admin_value include_path  "/www/oklaoshi/secret"
     php_admin_value session.name  "OKLAOSHISESSIONID"
     php_admin_value session.referer_check  "oklaoshi."

    #默认为非本地引用
     UnsetEnv  Local_Referer
    #判断是否为本地引用
     SetEnvIf Referer "oklaoshi\.(org|net|com|cn)" Local_Referer

  <Directory   "/www/oklaoshi/htdocs">
      Order Allow,Deny
      Allow from all
    #防止盗链(必须放在<Directory>内部)
    <FilesMatch "\.(js|css|gif|jpe?g|png|swf)$">
      Order Allow,Deny
      Allow from env=Local_Referer
    </FilesMatch>
  </Directory>

  #网站根用户后台管理目录(需要认证)
  <Directory   "/www/oklaoshi/htdocs/root_admin">
    AuthName Root_Admin
    Require user Root_Admin
    Satisfy all
    Order Allow,Deny
    Allow from all
   #后台管理关闭重写引擎
    RewriteEngine Off
  </Directory>

< /VirtualHost>

< VirtualHost *:80>
#(数据库管理服务器(phppgadmin))

  #文档树根目录、主机名和别名
   DocumentRoot /www/phppgadmin
    ServerName   dbadmin.oklaoshi.org
    ServerAlias  dbadmin.oklaoshi.net dbadmin.oklaoshi.com dbadmin.oklaoshi.cn

    #关闭重写引擎
     RewriteEngine Off
    #修改主服务器设置
     AddDefaultCharset Off
     LimitRequestBody 5242880
     DirectorySlash On
     DirectoryIndex index.html index.htm index.php

    #重新设置PHP的一些特性
     php_admin_value  open_basedir "/www/phppgadmin"
     php_admin_flag   display_errors   Off
     php_admin_flag   display_startup_errors   Off
     php_admin_flag   html_errors   Off
    #php_admin_flag   log_errors   Off
     php_admin_value  max_execution_time   15
     php_admin_value  memory_limit   16M
     php_admin_value  max_input_time   600
     php_admin_value  max_input_nesting_level   32
     php_admin_value  post_max_size   4M
     php_admin_flag   file_uploads On
     php_admin_value  upload_max_filesize   4M
     php_admin_value  arg_separator.output  "&"
     php_admin_value  arg_separator.input   "&"
     php_admin_value  variables_order   "GPCS"
     php_admin_flag   implicit_flush    Off
     php_admin_value  output_buffering  8192
     php_admin_value  include_path  "."
     php_admin_value  default_charset   none
     php_admin_flag   detect_unicode   Off
     php_admin_value  ignore_user_abort  On
     php_admin_value  session.name  "DBADMINSESSIONID"
     php_admin_value  session.referer_check  "dbadmin.oklaoshi."
     php_admin_value  mbstring.func_overload   0

  <Directory   "/www/phppgadmin">
    AuthName DB_Admin
    Require user DB_Admin
    Satisfy all
    Order Allow,Deny
    Allow from all
  </Directory>

< /VirtualHost>