一、站点的基本配置
1、ServerRoot "/mnt/software/apache2":apache软件安装的位置,其他指定的目录如果没有绝对路径,则目录是相对路径。
2、PidFile logs/httpd.pid:第一个httpd进程(所有其他进程的父进程)的进程号文件位置。
3、Listen 80:服务器监听的端口号。
4、ServerName www.clustiong.com:80:主站点的名称(网站的主机名)。
5、ServerAdmin admin@clusting.com:管理员的邮件地址。
6、DocumentRoot "/mnt/web/clujstiong":主站点的网页存储位置
7、DirectoryIndex index.html index.htm index.php:主页文件的设置
二、服务器的优化配置
apache的主要优势就是能更好的支持多处理器,在编译时通过使用--with-mpm选项来决定apache的工作模式。如果知道当前的apache使用的工作机制,则可以通过httpd -l命令列出apache的所有模块,从而就可以知道其工作方式。
(1)prefork。如果httpd -l列出了prefork.c,则需要对下面的这段参数进行配置:
StartServers 5 #启动Apache时启动的httpd进程个数
MinSpareServers 5 #服务器保持的最小空间进程数
MaxSpareServers 10 #服务器保持的最大空间进程数
MaxClients 150 #最大并发连接数
MaxRequestsPerChild 1000 #每个子进程被请求服务多少次后别kill掉,0表示不限制,推荐设置为1000
(2)worker。如果httpd -l列出worker.c,则需要对下面的内容进行配置:
StartServers 2 #启动Apache时启动的httpd进程个数
MaxClients 150 #最大并发连接数
MinSpareServers 5 #服务器保持的最小空间进程数
MaxSpareServers 10 #服务器保持的最大空间进程数
ThreadsPerChild 25 #每个子进程产生的线程数
MaxRequestsPerChil #每个子进程被请求服务多少次后别kill掉,0表示不限制,推荐设置为1000
(3)perchild。如果httpd -l列出perchild.c,则需要对下面的内容进行配置:
StartServers 5 #启动Apache时启动的httpd进程个数
StartThreads 5 #每个子进程启动时的线程数
MinSpareServers 5 #服务器保持的最小空间进程数
MaxSpareServers 10 #服务器保持的最大空间进程数
MaxThreadsPerChild 2000 #每个线程数最多被请求多少次后退出,0表示不受限制
MaxRequestsPerChil #每个子进程被请求服务多少次后别kill掉,0表示不限制,推荐设置为1000
三、持久性连接配置。
在apache的httpd.conf中,KeepAlive表示保持连接活跃、类似于MySQL的永久连接。如果将KeepAlive设置为On,那么来自同一客户端的请求就不需要再连接一次,避免每次请求都要新建一个连接而加重服务器的负担。KeepAlive的连接活跃时间当然是受KeepAliveTimeOut限制的。如果第二次请求和第一次请求之间超过了KeepAliveTimeOut的时间,第一次连接就会中断,再新建第二个连接,所以一般情况下,图片较多的网站应该把KeepAlive设为On。到底要把KeepAliveTimeOut设置为多少则需要根据网站的流量和服务器的配置而定。相关的配置说明如下:
KeepAlive On:开启持久性连接功能。
MaxKeepAliveRequests 100 :一个连接服务的最多请求次数
KeepAliveTimeout 30:测试一次连接中的多次请求传输之间的时间,如果服务器已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了这个参数设置的值后,服务器就断开连接。默认值是15秒。
四、日志记录
要有效的管理Web服务器,反馈服务器的活动,性能及出现的问题就很有必要。Apache HTTP服务器提供了非常全面而灵活的日志记录功能。
1、日志的配置
apache提供了很全面的日志管理工具来对服务器的活动进行事后分析。apache提供了多种不同的记录日志,但是对安全专业人士来说最重要的是访问日志。这个工具还有很多自定义功能,可以按照你的需要很方便的记录尽可能多或少的日志,以保证有效的分析。
(1)ErrorLog file-path|syslog[:facility]
指定了当服务器遇到错误时记录错误日志的文件。如果file-path不是一个以斜杠(/)开头的绝对路径,那么他会被认为是一个相对于ServerRoot的相对路径。示例如下:
ErrorLog "logs/error.log"
LogFomat fomat|nickname [nickname]
本指令的功能是定义访问日志的记录格式,例如:
LogFormat "%h %l %u %t"%r\" %>s %b" common
2、错误日志
错误日志是最重要的日志文件,其存放位置取决于ErrorLog指令。
3、访问日志
访问日志会记录对Web服务器的所有请求,起存放文件和记录的格式取决于CustomLog指令,LogFormat指令可以定义日志的内容格式。
CustomLog "logs/access.log" common