Apache配置优化

来源:互联网 发布:宜信数据挖掘工程师 编辑:程序博客网 时间:2024/05/16 01:44

1、 取消目录浏览

默认配置下,如果目录默认首页不存在的话,apahce将会生成目录文件列表。但是这个是不安全的。

查找所有包含以下内容的配置块


将红色内容改成 –indexes,就是在前面加多一个负号

 

2、 日志切割,按日期生成日志文件

默认配置下,所有日志将存放于一个文件。一方面所有日志都在一个文件,不好分析管理,另一方面随着文件越来越大,也影响到apache性能。

错误日志:

#ErrorLog "logs/error.log"

ErrorLog "|bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 86400"

访问日志:

#CustomLog "logs/access.log" common

CustomLog "|bin/rotatelogs.exe -l logs/access-%Y-%m-%d.log 86400" common

另外修改日志记录级别:

LogLevel error

 

3、 禁止向客户端发送服务器信息

默认配置下,apache会向客户端发生服务器信息,包含操作系统信息,apahce版本信息,apahce模块信息等等。这些信息都会影响到服务器安全。

ServerSignature Off

ServerTokens Prod

 

4、 限制apache处理的http协议

通过以下配置,限制apache只处理Get和Post数据,有助于提高服务器的安全性

 

5、 保持连接和响应超时

使用保持连接功能,使得apache可以在一个连接中处理客户端多个请求,可以提高服务器的性能。这个功能最好配合超时功能一起使用。但是,如果服务器繁忙,请求过多则应关闭这个功能。尽管KeepAlive方式能减少TCP连接数量和网络负载,但是KeepAlive需要和线程绑定,这就导致一个繁忙的服务器会耗光所有的线程。

打开保持连接功能:

KeepAlive On

在使用保持连接功能时,客户一次请求连接能响应文件的最大上限:

MaxKeepAliveRequests 100

在使用保持连接功能时,两个相邻的连接的时间间隔超过3 秒,就切断连接

KeepAliveTimeout 3

若30 秒后没有收到或送出任何数据就切断该连接:

Timeout 30

 

6、 使用Apache MPM(多路处理模块)

Apache MPM可以通过优化apache内部进程的调度来提高apache的处理能力。

取消以下配置的注释(去掉前面的#号)

Include conf/extra/httpd-mpm.conf

具体配置细节可以打开这个文件httpd-mpm.conf

通过“httpd -l”可以查看当前加载了具体哪个mpm模块,然后再针对这个模块做优化。

StartServers 指令设置了服务器启动时建立的子进程数量。因为Apache子进程数量取决于实际负载动态调整,所以调整这个参数意义不大。不同的MPM默认值也不一样。

StartThreads 指令设置了服务器启动时建立的线程数量。因为Apache线程数量取决于实际负载动态调整,所以调整这个参数意义不大。

MaxClients 指令设置了允许同时伺服的最大接入请求数量。任何超过MaxClients限制的请求都将进入等候队列,直到达到ListenBacklog指令限制的最大值为止。一旦一个链接被释放,队列中的请求将得到服务。

MaxRequestsPerChild 指令设置了每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:1、可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。2、给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

ThreadsPerChild 指令设置了每个子进程建立的线程数。子进程在启动时建立这些线程后就不再建立新的线程了。如果使用一个类似于mpm_winnt只有一个子进程的MPM,这个数值要足够大,以便可以处理更多的请求。如果使用一个类似于worker有多个子进程的MPM,每个子进程所拥有的所有线程的总数要足够大,以便可以协同处理所有的请求。

更多可以查看apache关于mpm的文档:http://httpd.apache.org/docs/2.2/mod/mpm_common.html

原创粉丝点击