apache配置详解.docx

上传人:b****4 文档编号:3807928 上传时间:2023-05-06 格式:DOCX 页数:27 大小:29.34KB
下载 相关 举报
apache配置详解.docx_第1页
第1页 / 共27页
apache配置详解.docx_第2页
第2页 / 共27页
apache配置详解.docx_第3页
第3页 / 共27页
apache配置详解.docx_第4页
第4页 / 共27页
apache配置详解.docx_第5页
第5页 / 共27页
apache配置详解.docx_第6页
第6页 / 共27页
apache配置详解.docx_第7页
第7页 / 共27页
apache配置详解.docx_第8页
第8页 / 共27页
apache配置详解.docx_第9页
第9页 / 共27页
apache配置详解.docx_第10页
第10页 / 共27页
apache配置详解.docx_第11页
第11页 / 共27页
apache配置详解.docx_第12页
第12页 / 共27页
apache配置详解.docx_第13页
第13页 / 共27页
apache配置详解.docx_第14页
第14页 / 共27页
apache配置详解.docx_第15页
第15页 / 共27页
apache配置详解.docx_第16页
第16页 / 共27页
apache配置详解.docx_第17页
第17页 / 共27页
apache配置详解.docx_第18页
第18页 / 共27页
apache配置详解.docx_第19页
第19页 / 共27页
apache配置详解.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

apache配置详解.docx

《apache配置详解.docx》由会员分享,可在线阅读,更多相关《apache配置详解.docx(27页珍藏版)》请在冰点文库上搜索。

apache配置详解.docx

apache配置详解

1.什么是Apache?

Apache,是一种开放源码的HTTP服务器,可以在大多数操作系统中运行,由于其多平台和安全性所以被广泛使用,是目前最流行的Web服务器软件之一。

Apache起初由Illinois大学Urbana-Champaign的国家高级计算程序中心开发,开始Apache只是作为Netscape网页服务器之外的选择。

渐渐的,它开始在功能和速度上超越其它基于Unix的HTTP服务器。

从1996年4月以来,Apache一直是Internet上最流行的HTTP服务器:

1999年5月它在57%的网页服务器上运行;而到了2005年7月这个比例上升到了69%。

Apache名称的由来是为了纪念美洲印第安人土著中的一支,因为这支土著拥有最高超的作战策略和无穷的耐性。

ApacheHTTPServer2.什么是?

ApacheHTTPServer(也被称为Apachehttpd)是Apache软件基金会创建的一个健壮的、工业级的、功能强大的、开放源代码的HTTP(Web)服务器。

二、httpd.conf中常用参数介绍

1.连接类参数

lTimeOut

服务器在断定请求失败前等待的时间,即接收和发送数据的超时时间。

【说明】

TimeOut参数用于设置Apache在等待以下三种事件的时间:

u接受一个GET请求耗费的总时间。

uPOST或PUT请求时,接受两个TCP包之间的时间。

u回应时TCP包传输中两个ACK包之间的时间。

还可以理解成Apache允许每次通过HTTP协议传输数据的最大时间。

lKeppAlive

启用HTTP持续作用。

【说明】

持续作用扩展自HTTP/1.0和HTTP/1.1的长连接特性。

提供了长效的HTTP会话,用以在同一个TCP连接中进行多次请求。

在某些情况下,这样的方式会对包含大量图片的HTML文件起到50%的加速作用。

对于使用HTTP/1.0的客户端来说,只有客户端设置使用的时候才会使用持续作用连接。

而对于HTTP/1.1的客户端来说,如果没有进行特殊指定,长连接将是默认的连接方式。

lMaxKeppAliveRequests

一个长连接中允许的请求数量。

【说明】

该参数限制了当启用KeepAlive时,每次连接允许的请求数量。

如果将此值设为0,将不限制请求的数量。

这里建议最好将此值设为一个比较大的值,以确保最优的服务器性能。

lKeppAliveTimeOut

持续作用中服务器在两次请求之间的等待时间。

【说明】

Apache在关闭本次连接前等待下一次请求的时间,即在这段时间内该连接没有接收到请求就会关闭此连接。

一旦收到一个请求,超时值将会被设置为KeppAliveTimeOut的值。

注意:

对于高负荷的服务器来说,如果把该参数的值设置的较大可能会导致一些性能方面的问题,因为KeppAliveTimeOut的值会影响释放空闲进程、线程时间的数量,如果该值大,那么在一定时间区间内释放出来的空闲进程、线程的数量会少于该值小的,所以会降低服务器处理请求的能力,从而影响整个系统的吞吐量。

lListen

服务器监听IP地址和端口。

【说明】

Listen参数是指Apache服务器在指定的IP地址和端口上进行监听;默认情况下Apache会在所有IP地址上监听。

Listen是一个必须设置的指令。

如果在配置文件中找不到这个指令,服务器将无法启动。

Listen参数还可以指定服务器在哪个端口或地址和端口的组合上进行监听请求。

如果只指定一个端口,服务器将在所有地址上监听该端口。

如果指定了地址和端口的组合,服务器将按照指定地址和指定的端口进行监听。

使用多个Listen参数可以指定多个不同的监听端口和/或地址端口组合。

例如,想要服务器接受80和8080端口上的请求,可以这样设置:

Listen80

Listen8080

为了让服务器在两个确定的地址端口组合上接受请求,可以这样设置:

Listen192.64.182.1:

80

Listen192.64.182.5:

8080

注意:

多个Listen指令指定了同一个地址和端口的组合后,会导致"Addressalreadyinuse"错误。

2.系统路径管理类参数

lServerRoot

服务器的安装基础目录。

【说明】

该参数设置了服务器所在的目录。

一般来说它将包含conf/和logs/子目录。

其它配置文件的相对路径都基于此目录(比如Include或LoadModule)。

例如:

ServerRoot/etc/httpd

lDocumentRoot

组成网络上可见的主文档树的根目录。

【说明】

此参数设置了httpd服务的目录。

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

比如说:

DocumentRoot/etc/httpd/www/web

于是对

注意:

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

lDirectory

可以封装一组参数,使之仅对文件空间中的某个目录及其子目录生效

【语法】

...

【说明】

用于封装一组参数,使其对某个目录及其子目录生效。

directory-path可以是一个目录的完整路径,或是包含了Unixshell匹配语法的通配符字符串,但是通配符都不能匹配"/"字符,例如:

是无法匹配/home/user/public_html的,而却能够正确匹配。

directory-path参数必须与被访问文件所在文件系统的路径保持一致。

如果有多个非正则表达式,配置段符合并包含某文档的目录(或其父目录),那么会以短目录优先的规则进行应用。

的默认访问权限为"AllowfromAll",这意味着Apache没有进行访问控制,通过设置Order,Deny,Allow,AllowOverride这个几个参数可以对访问进行控制。

下面简单介绍一下这4个参数的用法。

1>Allow

该参数是控制哪些主机才可以访问目标。

示例:

Allowfrom192.64.182.53

Allowfrom192.64.182.1192.64.182.3

表示IP地址为192.64.182.1或192.64.182.3或192.64.182.53才可以访问目标。

2>Deny

该参数是控制哪些主机被禁止访问目标。

示例:

Denyfrom192.64.182.53

Denyfrom192.64.182.1192.64.182.3

表示IP地址为192.64.182.1或192.64.182.3或192.64.182.53则不能访问目标。

3>Order

Order参数是控制Allow和Deny参数生效顺序的,常用的取值是:

Deny,Allow和Allow,Deny。

例如:

OrderDeny,Allow

Denyfrom192.64.182.53

Allowfrom192.64.182.1192.64.182.3

表示先考虑Deny条件再考虑Allow条件,该配置的意思是拒绝IP地址为192.64.182.53的访问,只允许192.64.182.1和192.64.182.3的访问。

再看一个例子:

OrderAllow,Deny

Allowfromall

Denyfrom192.64.182.53

表示只拒绝IP地址为192.64.182.53的访问。

4>AllowOverride

当服务器发现一个.htaccess文件(由AccessFileName指定)时,它需要知道在这个文件中声明的哪些指令能覆盖在此之前指定的配置参数。

一般情况下NONE即可。

【Directory参数小结】

最后给出一个完整封装目录的配置段:

OptionsIndexesFollowSymLinks//对URL映射到的系统目录产生文件列表

AllowOverrideNone

OrderDeny,Allow

Allowfromall

上面的配置对系统中的"/home/hrdc/images"目录进行了封装,而且对访问不加任何限制。

这段配置后面在讲如何将静态文件放置到Apache上还会用到。

3.监控反馈类参数

lPidFile

服务器用于记录父进程(监控进程)PID的文件

【说明】

PidFile指令设置服务器用于记录

父进程(监控进程)PID的文件。

如果指定的不是绝对路径,那么将视为基于ServerRoot的相对路径。

示例:

PidFile/var/run/apache.pid

这个文件通常用来给服务器父进程发送一个信号,用于关闭或重启服务器,以便重新打开ErrorLog和TransferLog文件、重新读取配置文件。

lServerAdmin

服务器返回给客户端的错误信息中所包含的管理员邮件地址。

【说明】

该参数是在所有返回给客户端的错误信息中给出管理员的邮件地址。

但也可以是一个URL地址,如果httpd不能将该参数的值识别为URL,它就会假定它是一个email-address,并在超连接中用在mailto后面。

这里推荐配置一个Email地址,如果配置的是URL一定要保证指向一个受控制的服务器,否则用户将无法确保和管理员取得联系。

示例:

ServerAdminhradmin.zh@

4.日志管理类参数:

lLogLevel

控制错误日志的级别

【说明】

LogLevel用于设置服务器按照日志级别来记录日志信息。

该参数可以选择的level有:

Level

描述

例子

emerg

紧急(系统无法使用)

"Childcannotopenlockfile.Exiting"

alert

必须立即采取措施

"getpwuid:

couldn'tdetermineusernamefromuid"

crit

致命情况

"socket:

Failedtogetasocket,exitingchild"

error

错误情况

"Prematureendofscriptheaders"

warn

警告情况

"childprocess1234didnotexit,sendinganotherSIGHUP"

notice

一般重要情况

"httpd:

caughtSIGBUS,attemptingtodumpcorein..."

info

普通信息

"Serverseemsbusy,(youmayneedtoincreaseStartServers,orMin/MaxSpareServers)..."

debug

调试信息

"Openingconfigfile..."

注意:

当指定了某个级别后,所有级别高于它的信息也会被同时记录。

建议至少使用crit级别。

当错误日志是一个单独分开的正式文件的时候,notice级别的消息总是会被记录下来,而不能被屏蔽。

lErrorLog

存放错误日志的位置

【说明】

该参数指定了当服务器遇到错误时记录日志的文件名。

如果该值不是一个以斜杠(/)开头的绝对路径,那么将被认为是一个相对于ServerRoot的相对路径。

示例

ErrorLog/etc/var/log/httpd/error_log

如果配置了一个以管道符号(|)开头的值,那么会为它指定一个命令来处理错误日志。

示例

ErrorLog"|/usr/local/bin/httpd_errors"

注意:

当在非Unix平台上输入文件路径的时候,路径分隔符必须统一使用正斜线(/)。

lCustomLog

设置服务器访问日志的文件名和格式。

【说明】

该参数用来对服务器的请求进行日志记录。

第一个参数指定了日志文件的位置,第二个参数用于设置日志的格式。

示例:

CustomLoglogs/access_log"%h%l%u%t""%r""%>s%b"

l定制日志文件格式

LogFormat和CustomLog的格式化参数是一个字符串。

这个字符串会在每次请求发生的时候,被记录到日志中去。

它可以包含将被原样写入日志文本放入字符串以及C风格的控制字符""n"和""t"。

文本中的引号和反斜杠应通过"""来转义。

请求本身的情况也将通过在格式字符串中放置各种"%"转义符的方法来记录,它们在写入日志文件时,根据下表的定义进行转换:

格式字符串

描述

%%

百分号(Apache2.0.44或更高的版本)

%a

远端IP地址

%A

本机IP地址

%B

除HTTP头以外传送的字节数

%b

以CLF格式显示的除HTTP头以外传送的字节数,也就是当没有字节传送时显示'-'而不是0。

%{Foobar}C

在请求中传送给服务端的cookieFoobar的内容。

%D

服务器处理本请求所用时间,以微为单位。

%{FOOBAR}e

环境变量FOOBAR的值

%f

文件名

%h

远端主机

%H

请求使用的协议

%{Foobar}i

发送到服务器的请求头Foobar:

的内容。

%l

远端登录名(由identd而来,如果支持的话),除非IdentityCheck设为"On",否则将得到一个"-"。

%m

请求的方法

%{Foobar}n

来自另一个模块的注解Foobar的内容。

%{Foobar}o

应答头Foobar:

的内容。

%p

服务器服务于该请求的标准端口。

%P

为本请求提供服务的子进程的PID。

%{format}P

服务于该请求的PID或TID(线程ID),format的取值范围为:

pid和tid(2.0.46及以后版本)以及hextid(需要APR1.2.0及以上版本)

%q

查询字符串(若存在则由一个"?

"引导,否则返回空串)

%r

请求的第一行

%s

状态。

对于内部重定向的请求,这个状态指的是原始请求的状态,---%>s则指的是最后请求的状态。

%t

时间,用普通日志时间格式(标准英语格式)

%{format}t

时间,用strftime(3)指定的格式表示的时间。

(默认情况下按本地化格式)

%T

处理完请求所花时间,以秒为单位。

%u

远程用户名(根据验证信息而来;如果返回status(%s)为401,可能是假的)

%U

请求的URL路径,不包含查询字符串。

%v

对该请求提供服务的标准ServerName。

%V

根据UseCanonicalName指令设定的服务器名称。

%X

请求完成时的连接状态:

X=

连接在应答完成前中断。

+=

应答传送完后继续保持连接。

-=

应答传送完后关闭连接。

(在1.3以后的版本中,这个指令是%c,但这样就和过去的SSL语法:

%{var}c冲突了)

%I

接收的字节数,包括请求头的数据,并且不能为零。

要使用这个指令你必须启用mod_logio模块。

%O

发送的字节数,包括请求头的数据,并且不能为零。

要使用这个配置你必须启用mod_logio模块。

修饰符

可以紧跟在"%"后面加上一个逗号分隔的状态码列表来限制记录的条目。

例如,"%400,501{User-agent}i"只记录状态码400和501发生时的User-agent头内容;不满足条件时用"-"代替。

状态码前还可以加上"!

"前缀表示否定,"%!

200,304,302{Referer}i"记录所有不同于200,304,302的状态码发生时的Referer头内容。

"<"和">"修饰符可以用来指定对于已被内部重定向的请求是选择原始的请求还是选择最终的请求。

默认情况下,%s,%U,%T,%D,%r使用原始请求,而所有其他格式串则选择最终请求。

例如,%>s可以用于记录请求的最终状态,而%

官方的一些说明

出于安全考虑,从2.0.46版本开始,%r,%i,%o中的特殊字符,除了双引号(")和反斜线(")分别用""和""进行转义、空白字符用C风格("n,"t等)进行转义以外,非打印字符和其它特殊字符使用"xhh格式进行转义(hh是该字符的16进制编码)。

在2.0.46以前的版本中,这些内容会被完整的按原样记录。

这种做法将导致客户端可以在日志中插入控制字符,所以在处理这些日志文件的时候要特别小心。

在2.0版本中(不同于1.3),%b和%B格式字符串并不表示发送到客户端的字节数,而只是简单的表示HTTP应答字节数(在连接中断或使用SSL时与前者有所不同)。

mod_logio提供的%O格式字符串将会记录发送的实际字节数。

示例

一些常见的格式串:

通用日志格式(CLF)

"%h%l%u%t""%r""%>s%b"

带虚拟主机的通用日志格式

"%v%h%l%u%t""%r""%>s%b"

NCSA扩展/组合日志格式

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

Referer日志格式

"%{Referer}i->%U"

Agent(Browser)日志格式

"%{User-agent}i"

URL映射类参数

lAlias

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

【说明】

语法:

AliasURL-pathfile-path|directory-path

Alias参数使文件可以被存储在DocumentRoot以外的本地文件系统中。

以(%已解码的)url-path路径开头的URL可以被映射到以directory-path开头的本地文件中。

示例:

Alias/image/etc/var/www/images

将不会被匹配。

对"/imagefoo.gif"

注意:

如果url-path中有后缀"/",则服务器要求有后缀"/"以扩展此别名。

也就是说"Alias/icons//usr/local/apache/icons/"并不能对"/icons"实现别名.

注意,可能需要额外指定一个段来覆盖别名的最终对象。

由于只有出现在段之前的别名才会被检测,所以它只对最终对象生效。

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

示例:

Alias/image/ftp/pub/image

Orderallow,deny

Allowfromall

二、多路处理模块的配置说明--prefork.c模块(一个非线程型的、预派生的MPM)、worker.c模块(支持混合的多线程多进程的多路处理模块)

ApacheHTTP服务器是一个强大的、灵活的能够在多种平台、不同环境下运行的Web服务器。

由于不同的平台和不同的环境经常产生不同的需求,为了达到同样的最佳效果则需要采取不同的实现方法,Apache的模块化设计就可以很好的适应大量不同的环境。

使得网站管理员能够在编译和运行时凭借载入不同的模块来决定服务器的附加功能。

Apache的多路处理模块(MPM)就是用于选择处理网络端口绑定、接受请求并指派子进程处理来自客户端的请求。

默认的MPM

下表列出了不同操作系统上默认的MPM。

如果编译时没有进行选择,这将是默认选择的MPM。

操作系统名称

MPM名称

BeOS

beos

Netware

mpm_netware

OS/2

mpmt_os2

Unix

prefork

Windows

mpm_winnt

1、prefork.c模块(一个非线程型的、预派生的MPM)

prefork.c模块是由一个单独的控制进程(父进程)负责产生子进程,这些子进程用于监听请求并作出应答。

Apache设置了一些备用的(spare)或者是空闲的子进程来处理即将接收的请求,这样可以避免服务器接收到请求后在创建子进程。

在Unix系统中,父进程通常以root身份运行以便邦定80端口,而Apache产生的子进程通常以一个低特权的用户运行。

User和Group参数就是用于设置子进程的低特权用户。

运行子进程的用户必须要对它所服务的内容有读取的权限,但是对服务内容之外的其他资源最好拥有尽可能少的权限。

【配置示例】

StartServers8

MinSpareServers5

MaxSpareServers20

ServerLimit400

MaxClients256

MaxRequestsPerChild4000

【参数说明】

1.ServerLimit

默认的MaxClient最大是256个线程,如果想设置更大的值,就需要修改ServerLimit这个参数。

例子中的400是ServerLimit这个参数的最大值。

如果需要更大,则必须编译apache,此前都是不需要重新编译Apache。

2.StartServers

指定服务器启动时建立的子进程数量,因为子进程的数量动态的取决于负载的轻重,所以一般没有必要调整这个参数,prefork模式默认为5。

3.MinSpareServers

指定空闲子进程的最小数量,所谓空闲子进程是指没有正在处理请求的子进程。

默认为5。

如果当前空闲子进程数少于MinSpareServers,那么Apache将以最大每秒一个的速度产生新的子进程,只有机器在非常繁忙的情况下才需要调整这个参数。

4.MaxSpareServers

设置空闲子进程的最大数量。

默认为10。

如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2