当前位置首页 > Apache知识

APACHE优化参数

阅读次数:284 次  来源:admin  发布时间:

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

彻底让版本等敏感信息消失

如果你需要彻底将版本之类的信息进行改头换面,你就需要在编译之前做准备或者进行从新编译了

上一篇:IIS下https配置及安全整改
下一篇:win2003的IIS無法使用,又一次安裝提示找不到iisadmin.mfl文件