第四章 Apache网页与安全优化
一、Apache网页优化
1、网页压缩
网站访问速度影响因素:应用程序响应速度、网络带宽、服务器性能、与客户端之间网络传输速度等。其中最重要的是=一个因素是Apache本身,因此提升Apache执行速度(使用网页压缩)是性价比最高的选择。
(1)gzip介绍
一种流行的文件压缩算法,大约可以煎炒70%以上的文件大小。利用Apache的gzip模块可使用该算法对网页内容进行压缩后再传输给客户端浏览器,从而加快网页加载速度
(2)HTTP压缩过程
①服务器接收到HTTP请求后,先检查浏览器是否支持压缩(Accept-Encoding信息)
②如果支持,服务器将检查请求文件的后缀,如HTML,CSS等静态文件,服务器会在压缩缓存目录中查找是否存在最新的压缩文件
③如果不存在最新压缩文件,服务器会返回未压缩的请求文件,并在缓存目录中存放该请求的压缩文件
④如果存在新压缩文件,则直接返回请求的压缩文件
⑤如果请求是动态文件,则服务器会动态压缩内容并返回浏览器,但内容不会存放到缓存目录中
(3)Apache的压缩模块
①Apache 1.x系列没有内江网页压缩技术,使用的是第三方mod_gzip模块进行压缩
②2.x系列内建了mod_deflate模块来取代mod_gzip
③mod_gzip对服务器cpu占用更高,但压缩效率更高
(4)mod_deflate模块安装配置
①检查是否安装该模块:apachectl -t -D DUMP_MODULES | grep deflate
②安装模块:
1)停止httpd服务
2)重新编译安装时增加选项:--enable-deflate
③启用模块:在httpd.conf文件中添加:
1)AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
2)DeflateCompressionLevel 9
3)SetOutputFilter DEFLATE
④检测conf语法:apachectl -t
⑤检测模块是否安装(同1)
⑥重启httpd服务
⑦利用抓包软件测试是否生效
2、网页缓存
网页缓存是将一部分经常不会改变或变动很少的页面缓存,下次浏览器再次访问时,不需要再去下载这些页面,从而提高用户访问速度
(1)检查模块是否安装:apachectl -t -D DUMP_DODULES | grep expires
(2)安装模块
①停止httpd服务
②重新编译安装并加入选项:--enable-expires
(3)配置启用模块:修改httpd.conf
①<IfModule mod_expires.c>
② ExpiresActive On
③ ExpiresDefault "access plus 600 seconds"
④</IfModule>
(4)检测conf语法:apachectl -t
(5)检查模块是否安装(同1)
(6)开启httpd服务
(7)通过抓包软件测试是否生效
二、Apache安全优化
1、防盗链
HTTP协议的Referer字段记录可追溯上一个入站地址,防盗链方法都是基于这个字段实现
(1)防盗链配置
①检查是否安装mod_rewirte模块:apachectl -t -D DUMP_MODULES | grep rewrite
②安装模块:--enable-rewrite
③启用模块:编辑httpd.conf文件
<Directory "/var/www/html/abc">
Order allow,deny
Allow from all
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://abc.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://abc.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.abc.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.abc.com/$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.abc.com/error.png
</Directory>
④conf语法检测:apache -t
⑤检查模块是否安装(同1)
(2)匹配规则表
①%{HTTP_REFERER}:浏览header中的连接字段
②!^:不以后面的字符串开头
③.*?:不以任意字符结尾
④NC:不区分大小写
⑤R:强制跳转
⑥?:匹配0-1个字符
⑦*:匹配0到多个字符
⑧+:匹配1到多个字符
⑨^:字符串开始标志
⑩$:字符串结束标志
⑪.:匹配任意单字符
2、隐藏版本
(1)修改httpd.conf配置文件
①Include conf/extra/httpd-default.conf
(2)修改httpd-default.conf文件
①ServerTokens Prod
②ServerSignature Off
(3)ServerTokens输出格式
①Prod:Server Apache
②Major:Server Apache/2
③Minor:Server Apache/2.0
④OS:Server Apache/2.0.41(Unix)
⑤Full:Server Apache/2.0.41(Unix)PHP/4.2.2MyMod/1.2