Apache配置文件详解及优化

  • 格式:pdf
  • 大小:172.69 KB
  • 文档页数:4

Apache配置⽂件详解及优化

Apache配置⽂件详解及优化

ServerTokens OS

#这个项⽬仅仅是在告知客户端我们服务器的版本和操作系统⽽已,不需要改动他

#如果不在乎你的系统信息被远程⽤户查询到,则可以将这个项⽬注释掉(不建议)

ServerRoot "/etc/httpd"

#服务器设置的最顶层⽬录,有点类似于chroot那种感觉。包括logs , modules等

#的数据都应该要放置在此⽬录下⾯(如果这些配置没有声明成绝对路径的话)

PidFile run/httpd.pid

#放置PID的⽂件,可⽅便apache软件的管理。只有相对路径考虑ServerRoot设置值,

#所以⽂件在/etc/httpd/run/httpd.pid

Timeout 60

#不论接收或发送,当持续连接等待超过60秒则该次连接就中断

#⼀般来说,此数值在300秒左右即可,不需要修改这个原始值

KeepAlive Off

#这⾥最好把默认值“Off”修改为“On”

#这⾥表⽰是否允许持续性的连接,也就是⼀个TCP连接可以具有多个⽂件资料传送的要求

#举例来说,如果你的⽹页内含有很多图⽚⽂件,那么这⼀次连接就会将所有的数据传送完

#⽽不必每⼀个图⽚都需要进⾏⼀次TCP连接。

MaxKeepAliveRequests 100

#可以将默认的100改成500或更⾼

#与上⼀个设置的值KeepAlive有关,当KeepAlive的值设置为On的时候,这个数值可以决定

#该次连接能够传输的最⼤传输数量。为了提⾼效率则可以改⼤⼀点。0代表不限制

KeepAliveTimeout 65

#在KeepAlive设置为“On”的情况下,该次连接在最后⼀次传输后等待延迟的秒数

#当超过该秒数的时候该连接中断。保持默认值15即可,如果设置的值太⾼(等待时间较长)

#在较忙碌的系统上⾯将会有较多的Apache程序占⽤资源,可能有效率⽅⾯的问题。

StartServers 8 #启动Apache的时候,唤醒⼏个PID来处理服务的。

#Apache使⽤了进程预派⽣的技术来处理请求,⼤⼤提⾼了响应速度,

MinSpareServers 5 #最⼩预备使⽤的PID数量

MaxSpareServers 20 #最⼤预备使⽤的PID数量

ServerLimit 4096 #服务器的限制

MaxClients 4096 #最多可以有多少个客户端同时连接到Apache

#最⼤的同时连接数量,也就是process不会超过这⼀数值。

#这个MaxClients设置值可以控制同时连上www服务器的总连接要求数量,

#也可以将其看作是最⾼实时在线⼈数。不过要注意的是:这个值并⾮越⼤越好

#因为他会消耗物理内存(与process有关),所以如果你设置太⾼导致超出物理内存#能够容许的范围,那么效率就会⼤⼤降低(因为会跑SWAP),此外,MaxClients也在

#Apache编译的时候就指定最⼤值了,所以你也⽆法超出系统最⼤值,除⾮你重新编译Apache

MaxRequestsPerChild 4000

#每个程序能够提供的最⼤传输次数要求。举例来说:如果有个⽤户连上服务器之后,

#要求数百个⽹页,当他的要求数量超过这个值的时候则该程序会被丢弃,

#另外切换⼀个新程序。这个设置可以有效地管理每个process在系统上存活的时间。

#根据观察所得,新程序的效果较好。

StartServers 8

MaxClients 4000

MinSpareThreads 25

MaxSpareThreads 75

ThreadsPerChild 75

MaxRequestsPerChild 0

#上⾯的prefork和worker其实就是两个与服务器连接资源有关的设置项⽬。

#默认的项⽬配置对于⼀般中⼩型⽹站来说已经很够⽤了,不过如果⽹站的流量

#⽐较⼤,也可以修订⼀下⾥⾯的数值。这两个模块都是⽤在提供⽤户连接资源,

#设置的数值越⼤代表系统会启动越多的程序来提供Apache的服务,反映速度就⽐较快

#Redhat和CentOS将这两个模块分别放到了不同的执⾏⽂件中,分别是

# |- /usr/sbin/httpd 使⽤prefork模块

# |- /usr/sbin/httpd.worker 使⽤worker模块

#/etc/sysconfig/httpd这个⽂件决定了Apache使⽤哪⼀个模块,可以通过。

#修改这个⽂件来切换不同的⼯作模式。

prefork和worker模式的⽐较prefork模式使⽤多个⼦进程,每个⼦进程只有⼀个线程。每个进程在某个确定的时间只能维持⼀个连接。在⼤多数平台上,Prefork MPM在效率上要⽐Worker MPM要⾼,但是内存使⽤⼤得多。prefork的⽆线程设计在某些情况下将⽐worker更有优势:它可以使⽤那些没有处理好线程安全的第三⽅模块,并且对于那些线程调试困难的平台⽽⾔,它也更容易调试⼀些。worker模式使⽤多个⼦进程,每个⼦进程有多个线程。每个线程在某个确定的时间只能维持⼀个连接。通常来说,在⼀个⾼流量的HTTP服务器上,Worker MPM是个⽐较好的选择,因为Worker MPM的内存使⽤⽐Prefork MPM要低得多。但worker MPM也由不完善的地⽅,如果⼀个线程崩溃,整个进程就会连同其所有线程⼀起"死掉".由于线程共享内存空间,所以⼀个程序在运⾏时必须被系统识别为"每个线程都是安全的"。LoadModule cgi_module modules/mod_cgi.so

LoadModule version_module modules/mod_version.so

#Apache提供了⾮常多的模块供我们使⽤,以上就是加载的模块

Include conf.d/*.conf

ServerAdmin root@localhost

#系统管理员的邮箱,当⽹站出现问题的时候,错误信息会显⽰的联系邮箱

DocumentRoot "/var/www/html"

#上⾯这⼀⾏的配置指定了放置⾸页的⽬录

Options FollowSymLinks

AllowOverride None

#Directory指定后⾯的路径是系统中的绝对路径

#这个设置是针对www服务器的默认环境⽽来的,因为是针对“/”的设置

#建议保留上⾯的默认值

#使⽤Directory指定了⼀个绝对路径的⽬录

Options -Indexes FollowSymLinks

#Options(⽬录参数)

#此设置值表⽰在这个⽬录内能够让Apache进⾏的操作,也就是针对Apache的程序的权限设置。

#主要的参数值有:

# Indexes:如果在此⽬录下找不到⾸页⽂件(默认为index.html)时,

# 就显⽰整个⽬录下的⽂件名,⾄于⾸页⽂件名则与DirectoryIndex设置的值有关

# 建议注释掉Indexes

# FollowSymLinks:这是Fllow Symolic Links的缩写,字⾯意义是让连接⽂件可以⽣效。

# 我们知道⾸页的⽬录是在/var/www/html,既然是WWW的根⽬录,理论上就像被chroot

# ⼀般。⼀般说来说被chroot的程序⽆法离开其⽬录,也就是说,默认的情况下,你在

# /var/www/html下⾯的连接⽂件只要链接到⾮此⽬录的其他地⽅,则该连接⽂件默认是失效的。

# 但是使⽤这个设置可以让链接有效的离开本⽬录

# ExecCGI:让此⽬录具有执⾏CGI的权限,⾮常重要。举例来说,OpenWebMail使⽤了

# 很多Perl程序,你要让OpenWebMail可以执⾏,就需要在该程序所在⽬录拥有ExecCGI

# 的权限才⾏。但是要注意:不要让所有的⽬录均可以使⽤ExecCGI

# Includes:让⼀些Server-Side Include程序可以运⾏。建议可以加上去

# MultiViews:这个有点像是多国语⾔的⽀持,与语⾔数据有关。在错误信息的回报内容中

# 最常见,在同⼀台主机中,可以依据客户端的语⾔⽽给予不同的语⾔显⽰。默认在回报

# 信息中存在,你可以检查⼀下/var/www/error/⽬录下的数据。AllowOverride None

#允许覆盖参数功能

#表⽰是否允许额外配置⽂件.htaccess的某些参数覆盖。我们可以在httpd.conf内设置好所有的权限

#不过这样⼀来,若⽤户⾃⼰的个⼈⽹页想要修改权限时将会对管理员造成困扰。因此,Apache默认

#可以让⽤户以⽬录下的.htaccess⽂件内覆盖内的某些功能参数。这个项⽬则是在规定

#.htaccess可以覆盖的权限类型有哪些。常见的有以下⼏种:

# ALL:全部的权限均可以覆盖

# AuthConfig:仅有⽹页认证(帐号与密码)可以覆盖

# Indexes:仅允许Indexes⽅⾯的覆盖

# Limits:允许⽤户利⽤Allow、Deny与Order管理可浏览的权限

# None:不可覆盖,也就是让.htaccess⽂件失效

#使⽤.htaccess会严重影响到Apache的性能,如果不是特殊需要,建议关闭

#

# Controls who can get stuff from this server.

#

Order allow,deny

Allow from all

#能否登陆浏览的权限

#决定此⽬录是否可被Apache的PID所浏览的权限设置。

#能否被浏览主要有两种判断的⽅式:

# deny,allow 以deny优先处理,但没有写⼊规则的默认为allow (可以理解拒绝所有,允许特定)

# allow,deny 以allow为优先处理,但是没有写⼊规则的默认为deny (可以理解允许所有,拒绝特定)

#所以在默认的情况下,因为是allow,deny 所以默认为deny(不可浏览)

#不过在下⼀⾏有个allow from all,allow优先处理,因此全部客户端均可浏览

#举个例⼦来说,我们要允许所有⼈访问除了192.168.61.61#Order allow,deny#allow from all#deny 192.168.61.61#以上这个例⼦很明显是允许所有拒绝特定的配置#第⼆⾏定义了允许的规则,开放所有#第三⾏定义了拒绝的规则,拒绝了⼀个IP,这个IP包含在第⼆⾏的all当中,#所以它的权限就默认由最后⼀⾏配置决定,最后⼀⾏是deny,所以61.61被成功被拒之门外