热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

(转)Apache2httpd.conf配置详解(二)

转之--http:jafy00.blog.51cto.com2594646508205 DocumentRoot"usrlocalapache-2.2.6

转之--http://jafy00.blog.51cto.com/2594646/508205

 

DocumentRoot "/usr/local/apache-2.2.6/htdocs"

#设置WEB文档根目录的默认属性

    Options FollowSymLinks

    AllowOverride None

    Order deny,allow

    Deny from all

#设置DocumentRoot指定目录的属性

    Options FollowSymLinks

    AllowOverride None

    Order allow,deny

    Allow from all

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

    DirectoryIndex index.html

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

    Order allow,deny

    Deny from all

    Satisfy All


#定义访问日志的格式

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

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

   

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

   

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

    CustomLog logs/access_log combined

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

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


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

    Scriptsock logs/cgisock

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

    AllowOverride None

    Options None

    Order allow,deny

    Allow from all

#设定默认MIME内容类型

DefaultType text/plain

##指定MIME类型映射文件

    TypesConfig conf/mime.types

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

    AddType application/x-compress .Z

    AddType application/x-gzip .gz .tgz

#启用内存映射

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默认配置

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

 

#配置多路处理模块(MPM) httpd-mpm.conf

首先说一下原理:

prefork模式
这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将

每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。

这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存

超出物理内存的大小。

worker模式
此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是,它也使用了多进

程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。

控制这个MPM的最重要的指令是,控制每个子进程允许建立的线程数的ThreadsPerChild指令,和控制允许建立的总线程数的MaxClients指令


#设置prefork多路处理模块

    StartServers          5

    MinSpareServers       5

    MaxSpareServers      10

    ServerLimit    8000

    MaxClients         8000

    MaxRequestsPerChild   0

StartServers:设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。

MinSpareServers:设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于 MinSpareServers ,那么Apache将以最大每秒一个的

速度产生新的子进程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。

MaxSpareServers:设置空闲子进程的最大数量。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。只有在非常繁忙机器上才需要调整这个参数

。将此参数设的太大通常是一个坏主意。如果你将该指令的值设置为比MinSpareServers 小,Apache将会自动将其修改成"MinSpareServers+1"。

ServerLimit:服务器允许配置的进程数上限。只有在你需要将MaxClients设置成高于默认值256的时候才需要使用。要将此指令的值保持和MaxClients一样。修改此指令的值必须

完全停止服务后再启动才能生效,以restart方式重启动将不会生效。

MaxClients:用于伺服客户端请求的最大请求数量(最大子进程数),任何超过MaxClients限制的请求都将进入等候队列。默认值是256,如果要提高这个值必须同时提高

ServerLimit的值。笔者建议将初始值设为(以Mb为单位的最大物理内存/2),然后根据负载情况进行动态调整。比如一台4G内存的机器,那么初始值就是4000/2=2000。

MaxRequestsPerChild:设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程

将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:可以防止(偶然的)内存泄漏无限进行而耗尽内存;

给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

如果设置为非零值,建议设为10000-30000之间的一个值。

公式:MaxClients<=ServerLimit


#设置worker多路处理模块

    StartServers          5

    ServerLimit          20

    ThreadLimit         200

    MaxClients         4000

    MinSpareThreads      25

    MaxSpareThreads   250

    ThreadsPerChild     200

    MaxRequestsPerChild   0

StartServers:设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。

ServerLimit:服务器允许配置的进程数上限。只有在你需要将MaxClients和ThreadsPerChild设置成需要超过默认值16个子进程的时候才需要使用这个指令。不要将该指令的值设

置的比MaxClients 和ThreadsPerChild需要的子进程数量高。修改此指令的值必须完全停止服务后再启动才能生效,以restart方式重启动将不会生效。

ThreadLimit:设置每个子进程可配置的线程数ThreadsPerChild上限,该指令的值应当和ThreadsPerChild可能达到的最大值保持一致。修改此指令的值必须完全停止服务后再启动

才能生效,以restart方式重启动将不会生效。

MaxClients:用于伺服客户端请求的最大接入请求数量(最大线程数)。任何超过MaxClients限制的请求都将进入等候队列。默认值是"400",16 (ServerLimit)乘以25

(ThreadsPerChild)的结果。因此要增加MaxClients的时候,你必须同时增加 ServerLimit的值。笔者建议将初始值设为(以Mb为单位的最大物理内存/2),然后根据负载情况进行动

态调整。比如一台4G内存的机器,那么初始值就是4000/2=2000。
MinSpareThreads:最小空闲线程数,默认值是"75"。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。

MaxSpareThreads:设置最大空闲线程数。默认值是"250"。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。

MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正你设置的值:worker要求其大于等于 MinSpareThreads加上ThreadsPerChild的和。

ThreadsPerChild:每个子进程建立的线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。每个子进程所拥有的所有线程的总数要足够大,以便可以处理

可能的请求高峰。

MaxRequestsPerChild:设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程

将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:可以防止(偶然的)内存泄漏无限进行而耗尽内存;

给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

如果设置为非零值,建议设为10000-30000之间的一个值。

公式:

         ThreadLimit >= ThreadsPerChild

         MaxClients <= ServerLimit * ThreadsPerChild 必须是ThreadsPerChild的倍数

         MaxSpareThreads >= MinSpareThreads+ThreadsPerChild

#配置Apache服务器默认设置 httpd-default.conf

Timeout 300

KeepAlive Off

MaxKeepAliveRequests 100

KeepAliveTimeout 5

UseCanonicalName Off

AccessFileName .htaccess

ServerTokens Prod

ServerSignature Off

HostnameLookups Off


Timeout:设置服务器在断定请求失败前等待的秒数。默认值300。

KeepAlive:设置是否启用HTTP持久链接,On 代表打开,Off 代表关闭。如果用于同一页面包含大量静态文件的应用,设置为On,以提高性能;如果用于主要为动态页面的应用,

设置为Off,以节约内存资源;如果服务器前跑有squid或者其它七层设备,设置为On。

MaxKeepAliveRequests:限制当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为"0",将不限制请求的数目。笔者建议将此值设为100-500之间的一个值,以确保最优

的服务器性能。

KeepAliveTimeout:设置持久链接中服务器在两次请求之间等待的秒数。对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户

端保持连接的进程就越多。

UseCanonicalName:配置服务器如何确定它自己的域名,可选值为On | Off | DNS。DNS用于为大量基于IP的虚拟主机支持那些古董级的不提供"Host:"头的浏览器使用。笔者建议

设置为Off。

AccessFileName:设置分布式配置文件的名字,默认为.htaccess。如果为某个目录启用了分布式配置文件功能,那么在向客户端返回其中的文档时,服务器将在这个文档所在的各

级目录中查找此配置文件,因此会带来性能问题,笔者建议关闭分布式配置文件功能。

ServerTokens:控制服务器回应给客户端的"Server:"应答头是否包含关于服务器操作系统类型和编译进的模块描述信息,同时还控制着 ServerSignature指令的显示内容。可选值

为Full | OS | Minor | Minimal | Major | Prod。笔者建议设置为显示最少信息的Prod。

ServerSignature:配置服务器生成页面的页脚,可选值为On | Off | EMail。采用On会简单的增加一行关于服务器版本和正在伺服的虚拟主机的ServerName,而EMail设置会额外

创建一个指向 ServerAdmin的"mailto:"部分。建议使用默认值Off。

HostnameLookups:设置是否启用对客户端IP的DNS查找,可选值为On | Off | Double。DNS查询会造成明显的时间消耗,建议设置为Off。

 

#配置mod_deflate压缩模块 httpd-deflate.conf

mod_deflate模块提供了DEFLATE输出过滤器,允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。

编辑mod_deflate压缩模块设置文件:


    DeflateMemLevel 9

    DeflateWindowSize 15

    DeflateBufferSize 8096

    DeflateCompressionLevel 8

    ## 调试时去掉下面5行前的注释符,用以记录压缩日志

    #DeflateFilterNote Input instream

    #DeflateFilterNote Output outstream

    #DeflateFilterNote Ratio ratio

    #LogFormat '"%r" %b %{outstream}n/%{instream}n (%{ratio}n%%) "%{User-agent}i"' deflate

    #CustomLog logs/deflate_log deflate

    ## 插入DEFLATE过滤器,以启用输出压缩

 SetOutputFilter DEFLATE

 ## Netscape 4.x 有一些问题,仅压缩txt/html类型

    BrowserMatch ^Mozilla/4 gzip-only-text/html

 ## Netscape 4.06-4.08不能处理任何压缩内容,不进行压缩

    BrowserMatch ^Mozilla/4.0[678] no-gzip

    ## MSIE 会伪装成 Netscape ,但是事实上它没有问题

    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    ## 设置图片、mp3、压缩格式文件等不需要进行压缩内容

    SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary

    SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary

    SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary

    ## 确保代理不会发送错误的内容

    Header append Vary User-Agent env=!dont-vary


DeflateMemLevel:指定zlib在压缩时最多可以使用多少内存,取值范围在1到9之间。

DeflateWindowSize:定义zlib压缩窗口(compression window)的大小,取值范围在1到15之间,通常窗口越大压缩效果越好。

DeflateBufferSize:定义zlib一次压缩的片断的字节数,默认为8096。

DeflateCompressionLevel:设定压缩程度,越高的压缩程度就会有越好的压缩效果,同时也意味着占用越多的CPU资源。取值范围在 1(最低压缩率) 到 9(最高压缩率)之间,如果

不设置此指令,默认为zlib的默认值。

DeflateFilterNote:在日志中放置压缩率标记。

语法为:DeflateFilterNote type notename

notename就表示这个压缩率标记的名字,你可以为了某种统计目的将这个标记的名字添加到访问日志中。

type指定notename标记所记录的数据类型:Input,在标记中存储过滤器输入流的字节数;Output,在标记中存储过滤器输出流的字节数;Ratio,在标记中存储过滤器的压缩比(输

出/输入*100),这是type的默认值。

SetOutputFilter:设置用于在服务器应答发送到客户端之前使用的过滤器。如果多于一个过滤器,必须按照处理内容的顺序用分号(;)分隔。

BrowserMatch:基于User-Agent头有条件地设置环境变量。

SetEnvIfNoCase:根据大小写无关的客户端请求属性设置环境变量。

Headers:配置HTTP应答头。这个指令可以替换、合并、删除HTTP应答头。应答头紧跟在内容处理器和输出过滤器完工之后生成,这时候才能对头进行修改。


#配置mod_expires模块

这个模块控制服务器应答时的Expires头内容和Cache-Control头的max-age指令。有效期(expiration date)可以设置为相对于源文件的最后修改时刻或者客户端的访问时刻。这些

HTTP头向客户端表明了文档的有效性和持久性。如果有缓存,文档就可以从缓存(除已经过期)而不是从服务器读取。接着,客户端考察缓存中的副本,看看是否过期或者失效,以

决定是否必须从服务器获得更新。

编辑mod_expires设置文件:httpd-expires.conf


## mod_expires设置文件

        ExpiresActive on

     ExpiresDefault A300

        ExpiresByType text/html A300

        ExpiresByType image/gif A2592000

        ExpiresByType image/jpeg A2592000

        ExpiresByType image/png A2592000

        ExpiresByType text/css A2592000

        ExpiresByType text/js A2592000

        ExpiresByType text/Javascript A2592000

        ExpiresByType application/x-Javascript A2592000


ExpiresActive:对其作用范围内的文档启用或禁用产生Expires和Cache-Control头的功能。若设置为 Off 则不会为其作用范围内的任何文档生成Expires和Cache-Control头(除非

被更低一层的规则改写,比如.htaccess文件)。若设置为 On 则会按照ExpiresByType和ExpiresDefault指令定义的标准为其作用范围内的文档生成Expires和Cache-Control 头。

注意,这个指令并不保证Expires或Cache-Control头一定会产生。如果定义的标准不规范,将不会产生这两个头,其效果是好像从未设置过这个指令一样。

ExpiresByType:为指定MIME类型的文档配置Expires头的值。

语法为:ExpiresByType MIME-type seconds

seconds参数设置了添加到基准时间以构造有效期限的秒数。Cache-Control: max-age的计算方法是从有效期减去当前请求时间并转化为秒数。

基准时刻可以是源文件的最后修改时刻或者客户端对源文件的访问时刻,至于使用那一个则由指定。"M"表示源文件的最后修改时刻,"A"表示客户端对源文件的访问时刻。

需要注意的是和seconds之间没有空格。如果使用"M",所有当前缓存中的文档副本都将在同一时刻过期,这个可能对定期更新的URL(比如位于同一位置的每周通告)很有好处

。如果使用"A",则每个客户端所得到的有效期是不一样的,这个可能对那些几乎不更新的图片文件很有好处,特别是对于一组都引用了相同图片的相关文档。

ExpiresDefault:设置其作用范围内的所有文档的默认有效期的计算方法,它可以被ExpiresByType指令基于MIME类型被改写。
语法为:ExpiresDefault seconds

seconds同ExpiresByType一致。

#最后配置一下虚拟主机  httpd-vhost.conf

#这里重点介绍一下基于多端口的配置

NameVirtualHost *:81
NameVirtualHost *:82
NameVirtualHost *:83



ServerAdmin 
jafy@jafy00.com
DocumentRoot /www1
ServerName 
www.jafy00.com
ErrorLog logs/www1-error.log
CustomLog logs/www1-access_log common

 




Options FollowSymLinks
#Deny from all
Allow from all

ServerAdmin 
jafy@jafy00.com
DocumentRoot /www2
ServerName 
www.jafy00.com
DirectoryIndex index.php index.html
ErrorLog logs/www2-error.log
CustomLog logs/www2-access_log combined


推荐阅读
  • 传送门上一篇:Day4-前端高频面试题之浏览器相关1、请介绍一下HTTP和HTTPS的区别?HTTPS是在HTTP的基础上加入了SSL协议 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
  • tomcat的log文件夹下有以下几种日志:1、catalina.YYYY-MM-DD.logcatalina引擎输出的日志;catalina是tomc ... [详细]
  • 开发中,EXT封装的.NET控件,使用了ExtJsExtenderControl的开源控件,发现个问题,就是每次控件加载,都需要调EXT_ALL.JS文件,600K,导致页面加载很慢。想对这个问题进行 ... [详细]
  • 用SpringBoot实现万能文件在线预览
    推荐一个用SpringBoot搭建的文档在线预览解决方案:kkFileView,一款成熟且开源的文件文档在线预览项目解决方案,对标业内付 ... [详细]
  • 1.man(相当于cmd--help)对不熟悉的命令想查询详细使用方法的帮助解释可以使用eg:manls就可以查看ls相关的用法注: ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • OAuth2.0指南
    引言OAuth2.0是一种应用之间彼此访问数据的开源授权协议。比如,一个游戏应用可以访问Facebook的用户数据,或者一个基于地理的应用可以访问Foursquare的用户数据等。 ... [详细]
author-avatar
yk_ao
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有