APACHE优化参数
1.CentOS5.8 x86_64位 采用最小化安装,系统经过了基本优化篇
2.apache版本:httpd-2.2.29
3.源码包存放位置:/home/oldboy/tools
4.源码包编译安装位置:/application/
一.设置日志轮循
1.下载并安装cronolog
[root@ser200 tools]# cd /home/oldboy/tool
[root@ser200 tools]# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
[root@ser200 tools]# tar zxf cronolog-1.6.2.tar.gz
[root@ser200 tools]# cd cronolog-1.6.2
[root@ser200 cronolog-1.6.2]# ./configure
[root@ser200 cronolog-1.6.2]# make&&make install
2.配置apache使用cronolog
[root@ser200 cronolog-1.6.2]# vi /application/apache/conf/extra/httpd-vhosts.conf
CustomLog "|/usr/local/sbin/cronolog /app/logs/access_%Y%m%d.log" combined
ErrorLog "|/usr/local/sbin/cronolog /app/logs/error_%Y%m%d.log"
3.更多日志格式参考:
按天轮询(生产环境常见用法,推荐使用):
CustomLog "|/usr/local/sbin/cronolog /app/logs/access_www_%Y%m%d.log" combined
按小时轮询(生产环境较常见用法):
CustomLog "|/usr/local/sbin/cronolog /app/logs /access_www_ %Y%m%d%H.log" combined
二.设置404页面
为了提升网站的用户体验和SEO优化需要.强烈建议设置404跳转页面
第一种:在apache的主配置文件httpd.conf中的<Directory></Directory>标签内添加ErrorDocument配置。
第二种:在apache的虚拟主机配置文件httpd-vhost.conf中的<VirtualHost*:80></VirtualHost>中添加ErrorDocument配置。
[root@ser200 cronolog-1.6.2]# vi /application/apache/conf/extra/httpd-vhosts.conf
lt;VirtualHost *:80>
ServerAdmin 1968023646@qq.com
DocumentRoot "/data/www/blog
ServerName www.test.com
ServerAlias test.com
CustomLog "|/usr/local/sbin/cronolog /app/logs/access_%Y%m%d%_www.log" combined
ErrorLog "|/usr/local/sbin/cronolog /app/logs/error_%Y%m%d.log"
ErrorDocument 404 /404.html
lt;/Directory>
ErrorDocument的命令格式如下:
ErrorDocument 错误代码 跳转到的页面或文件
三.安装压缩模块deflate
网站随着用户访问量的增加和内容量的增加,网站的带宽会不断的增加,随之就是网站成本的增加。并且当内容量增大的时候,客户端如果带宽小,就会影响用户的体验。因此从这两方面考虑,网站的某些内容必须经过压缩之后再传给用户,然后在用户客户端进行解压,来实现双方共赢的效果。
apache的压缩要用到mod_deflate模块,该模块提供了DEFLATE输出过滤器,允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。它的核心思想就是把文件先在服务器进行压缩,然后再进行传输,这样可以显著减少文件传输的大小。当传输完毕后,客户端游览器会重新对压缩过的内容进行解压缩。如果没特殊情况的话,所以的文本内容都应该能被gzip压缩,例如:html(php),js,css,xml,txt等。特殊情况就是像一些首页上有很多广告投放的js代码,由于需要每次加载进而进行来访信息统计,所以这些广告代码拥有者网站的js不会经过gzip压缩,
1、mod_deflate模块检查及安装
[root@ser200 /]# /usr/local/apache/bin/apachectl -M | grep deflate
deflate_module (static) #此种结果为编译安装时装的
[root@ser200 /]# /usr/local/apache/bin/apachectl -M | grep deflate
deflate_module (shared) #此种结果为DSO方式安装的
2.安装
a.编译时安装方法
编译的时候跟上--enable-deflate即可实现安装
.DSO方式安装
[root@ser200 /]# cd /server/tools/httpd-2.4.6/modules/filters/ #切到apache源码包mod_deflate所在的目录下
[root@ser200 filters]# /usr/local/apache/bin/apxs -c -i -a mod_deflate.c #以dso的方式编译安装到apache中
[root@ser200 filters]# ll /usr/local/apache/modules/mod_deflate.so #检查mod_deflate是否安装,成功安装这里会显示出该文件
-rwxr-xr-x 1 root root 76697 11月 5 07:50 /usr/local/apache/modules/mod_deflate.so
更详细的配置方法参考: apache模块defalte安装
四.设置expires缓存
不经常改动的图片.CSS,HTML来指定长时间缓存,节省带宽
1.mod_expires模块检查及安装
[root@ser200 apache]# bin/apachectl -M|grep expire
expires_module (static)
更详细的配置方法参考::apache缓存模块expire
http://txidc.blog.51cto.com/9138217/1566047
2.虚拟主机设置单独的目录expire缓存
lt;Directory "/data/www/blog/wp-content">
ExpiresActive o
ExpiresByType image/jpeg "access plus 12 months"
ExpiresByType image/jpg "access plus 12 months"
lt;/Directory>
[root@ser200 apache]# curl -I http://www.test.com/wp-content/uploads/2014/10/2.jpg
HTTP/1.1 200 OK
Date: Tue, 21 Oct 2014 03:03:29 GMT
Server: Apache/2.2.29 (Unix) DAV/2 PHP/5.3.29
Last-Modified: Sun, 19 Oct 2014 13:39:02 GMT
ETag: "10e-1a548-505c6b8952980"
Accept-Ranges: byte
Content-Length: 107848
Cache-Control: max-age=31104000
Expires: Fri, 16 Oct 2015 03:03:29 GMT
Vary: Accept-Encoding
Content-Type: image/jpeg
五.修改apache运行用户
1.apache的默认用户,可以提升apache的安全性。这样,即使apache服务被攻破,黑客拿到apache普通用户也不会对系统和其他应用造成破坏
useradd -M -s /sbin/nologin txidc #创建apache用户
[root@server /]# vi /usr/local/apache/conf/httpd.conf
User txidc #更改默认的daemon用户为apache用户
Group txidc #更改默认的daemon用户为apache用户
六.使用worker模式,提升并发数
七.屏蔽apache版本信息
1.在apache主配置文件httpd.conf中,找到包含httpd-default.conf的行,并解开注释
#Include conf/extra/httpd-default.conf
2.尽管配置文件
1.[root@sunsky /]# grep Server conf/extra/httpd-default.conf|grep -v "#"
ServerTokens full
ServerSignature Off
修改为
ServerTokens Prod
ServerSignature Off
经过上面的修改,当你在curl-I的时候,还是会出现下面的信息
[root@ser200 apache]# curl -I www.test.com
HTTP/1.1 200 OK
Date: Tue, 21 Oct 2014 04:32:53 GMT
Server: Apache/2.2.29 (Unix) DAV/2 PHP/5.3.29
X-Powered-By: PHP/5.3.29
X-Pingback: http://www.test.com/xmlrpc.ph
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
=====================================================
[root@ser200 apache]# curl -I www.test.com
HTTP/1.1 200 OK
Date: Tue, 21 Oct 2014 04:36:17 GMT
Server: Apache
X-Powered-By: PHP/5.3.29
X-Pingback: http://www.test.com/xmlrpc.ph
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
彻底让版本等敏感信息消失
如果你需要彻底将版本之类的信息进行改头换面,你就需要在编译之前做准备或者进行从新编译了