/ 中存储网

Apache服务器httpd.conf配置说明

2014-03-14 11:45:01 来源:ITJS.CN
#####################################################################

##### 适用于主服务器配置的动态加载模(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   www.server110.com

    ServerAlias  server110.com

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

     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   www.server110.com

    ServerAlias     server110.com

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

     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   www.server110.com

    ServerAlias  server110.com

    #关闭重写引擎

     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>