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被成功被拒之门外