1.配置cronolog进行日志轮询 Linux下运行的Web服务器Apache,默认日志文件是不分割的, 一个整文件既不易于管理,也不易于分析统计。 安装cronolog后,可以将日志文件按时间分割,易于管理和分析。

下载cronolog cd /tuwei/tools tar zxf cronolog-1.6.2.tar.gz cd cronolog-1.6.2 ./configure make make install

配置日志轮询

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 添加以下内容 %w表示按周轮询 CustomLog "|/usr/local/sbin/cronolog /usr/local/apache2/log/access_www_%w.log" combined

2.错误页面优雅显示 可以将404等错误页面重新定向到网站首页或其他页面,提示用户体验 vim /usr/local/apache2/conf/httpd.conf

修改以下内容 ErrorDocument 404 http://blog.51cto.com/tuwei 提示:支持url和文件 拓展:apache的优雅显示 vim /usr/local/apache2/conf/httpd.conf

[root@lamp01 conf]# grep ErrorDocument httpd.conf #ErrorDocument 500 "The server made a boo boo." #ErrorDocument 404 /missing.html #ErrorDocument 404 "/cgi-bin/missing_handler.pl" #ErrorDocument 402 http://www.example.com/subscription_info.html ErrorDocument 404 http://blog.51cto.com/tuwei 3.mod_deflate文件压缩功能

Gzip的思想就是把文件现在服务端进行压缩,然后再传输。

添加以下内容到虚拟主机,可以在http.conf最后加入 <ifmodule mod_deflate.c> DeflateCompressionLevel 9 SetOutputFilter DEFLATE DeflateFilterNote Input instream DeflateFilterNote Output outstream DeflateFilterNote Ratio ratio #LogFormat '"%r" % {outstream}n/%{instream}n (%{ratio}n%%)' deflate #CustomLog logs/deflate_log.log deflate </ifmodule> 4.mod_expires缓存

5.更改apache的默认用户 实际工作中最好改为别人不知道的用户 useradd -M -s /sbin/nologin xxx 6.worker模式,提升并发数 7.屏蔽apache版本等敏感信息 修改httpd.conf文件,打开httpd-default.conf模块 修改httpd-default.con文件,ServerSignature off以及ServerTokens Prod b不过还是有server=Apache字样,若要完全去掉需重新编译 彻底去掉banner,修改httpd.h 8.apache目录文件权限设置(root 755,文件644)

提示:在网站架构中,应把资源文件,包括用户上传的图片、附件等和程序分离, 最好把上传程序也分离,这样就可以从容授权了

9.开启httpd-mpm.conf增加连接数 修改httpd.conf文件,打开httpd-mpm.conf模块 1.apache服务为worker模块的配置 默认为 <IfModule mpm_worker_module> StartServers 3 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerChild 0 </IfModule>

修改后 <IfModule mpm_worker_module> StartServers 5 MaxClients 2000 ServerLimit 25 MinSpareThreads 50 MaxSpareThreads 200 ThreadLimit 200 ThreadsPerChild 100 MaxRequestsPerChild 0 MaxRequestWorkers 400 MaxConnectionsPerChild 0 </IfModule>

备注:MaxClients <=ServerLimit * ThreadsPerChild 2.apache服务为perfork模式,生产环境配置文件httpd-default.conf并发连接数配置

StartServers 10 MinSpareServers 10 MaxSpareServers 15 ServerLimit 2000 MaxClients 1500
MaxRequestsPerChild 10000

10.apache防盗链功能

11.禁止目录index

<Directory "/var/tuwei"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>

或者

<Directory "/var/tuwei"> Options -Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>

12.禁止用户覆盖(重载)

AllowOverride None #禁止用户覆盖(重载)

加快服务器速度,因为它不再为每个请求寻找每个目录访问控制文件.htaccess 13.关闭CGI ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" .............................................................................. <Directory "/usr/local/apache2/cgi-bin"> AllowOverride None Options None Require all granted </Directory> 删除以上内容

14.避免使用.htaccess文件(分布式配置文件)

首先是性能考虑。如果AllowOverride启用了.htaccess文件,则apache需要在每个目录查找该文件,因此, 无论是否用到,启用该文件都会导致性能的下降。 其次是安全考虑,这样会允许用户自己修改服务器的配置。 默认在unix平台能够使用.htaccess来对目录权限进行规则定义,这是不安全的,建议关闭。 默认选项: AccessFileName .htaccess 建议改为 #AccessFileName .htaccess 15.apache的安全模块 mod_evasive20 防DDOS mod_limitipconn(针对单站点)配置,mod_security2 防SQL注入等 make jail 是一个自动把建立jail所需要的程序放到jail内的软件,使用python编写

mod_security http://www.modsecurity.org

apache的一个模块,具有请求过滤,日志审计等功能,可以防止SQL INjection,跨站脚本攻击

16.正确途径取得源代码,勤大apache补丁

17.apache日志授权 root 700权限

chown -R root.root logs chmod -R 700 logs

18.系统内核参数优化

19.禁止php解析指定站点目录

20.使用tmpfs文件系统替代频繁访问的目录 php图片上传 php服务异常最终解决方案 mount tmpfs 编辑 /etc/rc.local mount -t tmpfs tmpfs /tmp

21.尽可能减少http请求数

常用方法,合并js css以及image maps和css sprites等

工具网站 http://www.csssprites.com

22.使用CDN做网站加速

简单地讲,通过现有的internet中增加一层新的网络架构。将网站的内容发布到最接近用户的 cache服务器内,通过DNS负载均衡技术,实现用户就近访问cache服务器的内容,这样可以有效 减少数据在网络上传输的时间,提高速度。

23.apache程序架构优化 程序页面服务器 图片附件服务器 上传服务器 以上三者的功能尽量分离 a。分离最佳方式是分别使用独立服务器(需要程序支持) b。次选方案在前端负载均衡器通过haproxy/nginx根据目录或者扩展名请求后面 对应的服务器 根据扩展名分发 根据url分发 其他的抛给web服务器