Linux--Apache网页优化与安全优化(网页压缩、网页缓存、配置防盗链、隐藏版本信息)
一:Apache网页优化概述
在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容。
- 网页压缩
- 网页缓存
1.1:网页压缩
1.1.1:gzip介绍
配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端游览器。
- 作用:
降低了网页传输的字节数,加快网页加载速度
节省流量,改善用户的浏览体验
gzip与搜索引擎的抓取工具有着更好的关系
1.1.2:Apache的压缩模块
mod_gzip模块与mod_deflate模块
- 两者均使用gzip压缩算法,运作原理类似
- mod_deflate的压缩速度略快,而mod_gzip的压缩比略高
- mod_gzip对服务器的CPU占用要高一些
- 高流量的服务器,使用mod_deflate可能会比mod_gzip加载速度更快
Apache 1.x:没有内建网页压缩技术,但可使用第三方模块mod_gzip执行压缩
Apache 2.x:在开发的时候内建了mod_deflate这个模块,取代mod_gzip
1.1.3:配置网页压缩功能
1.1.3.1:解压http压缩包
[root@localhost opt]# ls
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 rh
[root@localhost opt]# tar xzvf apr-1.6.2.tar.gz
[root@localhost opt]# tar xzvf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar xjvf httpd-2.4.29.tar.bz2
[root@localhost opt]# ls
apr-1.6.2 apr-1.6.2.tar.gz apr-util-1.6.0 apr-util-1.6.0.tar.gz httpd-2.4.29 httpd-2.4.29.tar.bz2 rh
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
1.1.3.2:安装Apache所需环境的软件包
yum install gcc gcc-c++ make pcre-devel expat-devel perl zlib-devel -y
1.1.3.3:指定安装路径,配置功能模块
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \ #指定安装路径
> --enable-so \ #开启核心功能
> --enable-rewrite \ #开启重写模块,便于设置防盗链
> --enable-charset-lite \ #指定字符集
> --enable-cgi \ #开启通用网关接口协议
> --enable-expires \ #开启压缩功能
> --enable-deflate #开启网页缓存功能
1.1.3.4:编译安装
[root@localhost httpd-2.4.29]# make && make install
1.1.3.4:优化执行路径
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf #建立主配置文件的软链接,方便后期修改
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ #把可执行命令添加到命令的搜索路径中
[root@localhost httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd #把httpd服务交给service管理
1.1.3.5:修改主配置文件
[root@localhost httpd-2.4.29]# vim /etc/httpd.conf
LoadModule deflate_module modules/mod_deflate.so #开启deflate压缩模块
Listen 192.168.209.134:80 #开启ipv4监听
#Listen 80 #关闭ipv6监听
ServerName www.kgc.com:80 #设置域名
#在末尾加入以下字段
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
</IfModule>
[root@localhost httpd-2.4.29]# apachectl -t #验证语法是否正确
Syntax OK
1.1.3.6:验证mod_deflate模块是否启用
[root@localhost httpd-2.4.29]# apachectl -t -D DUMP_MODULES | grep "deflate"
deflate_module (shared)
1.1.3.7:在站点首页文件中加入一张图片
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/
[root@localhost httpd]# ls
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[root@localhost httpd]# cd htdocs/
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# rz -E #用xshell连接,可直接拖进来
rz waiting to receive.
[root@localhost htdocs]# ls
animal.jpg index.html
[root@localhost htdocs]# vim index.html
<html><body><h1>It works!</h1>
<img src="animal.jpg"/>
</body></html>
1.1.3.8:启动Apache服务
[root@localhost htdocs]# iptables -F
[root@localhost htdocs]# setenforce 0
[root@localhost htdocs]# service httpd start
1.1.3.8:访问Apache站点用fiddler抓包工具验证图片在传输过程中是否进行了压缩
1.2:配置网页的缓存
通过mod_expire模块配置Apache,使网页能在客户端游览器缓存一段时间,以避免重复请求
使用mod_expire模块后,会自动生成页面头部信息中的Expire标签和Cache-Crontrol标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
1.2.1:修改主配置文件
在前面的编译安装中已经加入了mod_expire模块
LoadModule expires_module modules/mod_expires.so #开启此模块
#在末尾加入以下字段
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 50 seconds"
</IfModule>
1.2.2:验证语法
[root@localhost htdocs]# apachectl -t
Syntax OK
1.2.3:验证mod_expires模块是否启动
[root@localhost htdocs]# apachectl -t -D DUMP_MODULES | grep "expires"
expires_module (shared)
1.2.4:重启Apache服务
[root@localhost htdocs]# service httpd restart
1.2.5:访问Apache站点用fiddler抓包工具查看缓存是否生效
二:Apache安全优化
2.1:配置防盗链
防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源。
如果别人盗用网站的这些静态资源,明显会增加服务器的带宽压力。
作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用。
2.1.1:实验环境
主机信息 | 主机功能 |
---|---|
server1(192.168.209.134)www.kgc.com | 被盗链服务器 |
server2(192.168.209.142)www.benet.com | 盗链服务器 |
客户端 window | 访问验证 |
2.1.2:server1配置
安装bind软件包,对www.kgc.com、www.benet.com进行域名解析,此处不再介绍,可观看之前的DNS域名解析的博客
2.1.3:server2配置模拟盗链
yum安装httpd软件包,修改配置文件的监听地址和域名
写一个首页文件
[root@server2 ~]# cd /var/www/html/
[root@server2 html]# vim index.html
<h1>this is daolian web!</h1>
<img src="http://www.kgc.com/animal.jpg"/> #图片地址为server1站点中的连接地址
#指定DNS服务器用来解析域名
[root@server2 html]# echo "nameserver 192.168.209.134" > /etc/resolv.conf
之后重启http服务
2.1.4:客户端验证
打开客户端,选定DNS服务器的地址192.168.209.134
访问被盗链服务器和盗链服务器
可以看到盗链服务器网站中并没有放入图片,成功盗用了其他网站的图片
2.1.5:server1修改配置文件防止盗链
注意:Apache在编译安装时需要安装rewrite模块,如果没有,需要重新编译安装,前面已经安装,不再描述
配置规则变量说明:
- %{HTTP_REFERER}:游览header中的链接字段,存放一个链接的URL,代表是从哪个链接访问所需的网页
- !^:不以后面的字符串开头
- .*$:以任意字符串结尾
- NC:不区分大小写
- R:强制跳转
- RewriteEngine On:打开网页重写功能
- RewriteCond:设置匹配规则
- RewriteRule:设置跳转动作
- 如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配
[root@server1 htdocs]# vim /usr/local/httpd/conf/httpd.conf
#开启重写模块
LoadModule rewrite_module modules/mod_rewrite.so
#在站点目录标签里加入
249 RewriteEngine On
250 RewriteCond %{HTTP_REFERER} !^http://kgc.com/.*$ [NC]
251 RewriteCond %{HTTP_REFERER} !^http://kgc.com$ [NC]
252 RewriteCond %{HTTP_REFERER} !^http://WWW.kgc.com/.*$ [NC]
253 RewriteCond %{HTTP_REFERER} !^http://www.kgc.com$ [NC]
254 RewriteRule .*\.(gif|jpg|swf)$ http://www.kgc.com/error.png
# 把错误图片上传到站点目录
[root@server1 htdocs]# ls
animal.jpg index.html
[root@server1 htdocs]# rz -E
rz waiting to receive.
[root@server1 htdocs]# ls
animal.jpg error.png index.html
2.1.6:客户端再次验证
可以看到防盗链已经生效
2.2:隐藏版本信息
- 正常访问Apache网站用Fiddler抓包工具进行查看
- 修改配置文件,隐藏版本信息
[root@server1 htdocs]# vim /usr/local/httpd/conf/httpd.conf
496 Include conf/extra/httpd-default.conf #开启
[root@server1 htdocs]# cd /usr/local/httpd/conf/extra/
[root@server1 extra]# ls
httpd-autoindex.conf httpd-info.conf httpd-mpm.conf httpd-userdir.conf
httpd-dav.conf httpd-languages.conf httpd-multilang-errordoc.conf httpd-vhosts.conf
httpd-default.conf httpd-manual.conf httpd-ssl.conf proxy-html.conf
[root@server1 extra]# vim httpd-default.conf
55 ServerTokens Prod #把Full改为Prod
- 重启服务,客户端访问继续用Fiddler抓包查看