分类: LINUX
2011-08-08 16:42:40
### 此份配置同时适用于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的文件 PidFile log/httpd.pid PidFile /var/run/httpd.pid #TCP接收缓冲区大小(相当于8帧,如果不用http上传可减小到4帧) ReceiveBufferSize 11840 #TCP发送缓冲区大小(相当于8帧,一般比最常用页面压缩后的平均尺寸稍大) SendBufferSize 11840 #父进程和子进程之间通信使用的计分板,建议不要设置以首选在匿名共享内存中建立 #ScoreBoardFile /tmp/httpd_status ##### mpm_winnt 特有指令 #每个子进程可配置的线程数上限,应当和ThreadsPerChild可能达到的最大值保持一致 ThreadLimit 5 #每个子进程建立的线程数(必须小于等于ThreadLimit) ThreadsPerChild 5 #处理客户端连接的线程使用的栈尺寸(65536字节),注释掉以后将使用操作系统默认值 #ThreadStackSize 65536 #仅在其他软件干扰AcceptEx()操作时才使用这个 #Win32DisableAcceptEx ##### prefork 特有指令 #串行化多个子进程在多个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 ##################################################################### ##### mod_so指令(一共只有两条Load..指令,且仅能用于全局配置) ##### #由于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环境)[] #LoadModule bw_module bin/mod_bw.so ##### 添加PHP5支持 LoadFile php/php5ts.dll LoadModule php5_module php/php5apache2_2.dll PHPINIDir php LoadModule php5_module /lib/httpd/libphp5.so PHPINIDir /etc/httpd 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 #服务器根目录(必须是绝对路径),配置文件中的其它相对路径都将基于此目录 ServerRoot /GreenAPP/Apache ServerRoot /share/empty #"Server:"应答头(Prod最少,Full最多) ServerTokens Prod #服务器超时 TimeOut 15 #禁止处理TRACE请求 TraceEnable off ##################################################################### ##### 仅能够用于全局配置的动态加载模块指令 ##### # mime.types文件的位置(mod_mime) TypesConfig conf/mime.types TypesConfig /etc/httpd/mime.types #检查服务器发送的 nonce 计数(尚未实现)(mod_auth_digest) #AuthDigestNcCheck On #为了跟踪客户端而分配的共享内存字节数(mod_auth_digest),每链接需要128字节。 AuthDigestShmemSize 25600 #禁止在内存中缓冲日志(mod_log_config) BufferedLogs Off #为了和RewriteMap*程序*通讯而使用的同步锁文件的名称(mod_rewrite) #RewriteLock file-path #为每个请求记录扩展的状态信息 ExtendedStatus On ################################################################################################ #### 第二部分 主服务器配置[这些指令的作用域含同时含有"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 #限制Apache子进程派生的进程占用CPU的最大秒数 RLimitCPU 1 1 #限制由Apache子进程派生的进程占用的最大内存字节数 RLimitMEM 1 1 #限制由Apache子进程派生的进程所派生的进程数目 RLimitNPROC 0 1 #禁止生成服务器端生成文档的页脚 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 #错误日志(未使用滚动) ErrorLog log/error.log LogLevel info ErrorLog /var/log/httpd/error.log LogLevel warn #### 处理器 #定位CGI脚本解释器(仅用于Win32) ScriptInterpreterSource Script #强制所有匹配的文件被一个指定的处理器处理 #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 #目录结尾斜线(/)自动补全功能(通过重定向,强烈建议打开) #默认的目录索引文件(强烈建议按此顺序设置) DirectorySlash On DirectoryIndex index.html index.htm index.php DirectorySlash Off DirectoryIndex none #### 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 seconds |