|
Apache网页与安全优化——网页压缩及缓存(理论实践相结合!)
Apache网页优化概述
在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代
为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化内容
优化内容
配置网页压缩功能
工作模式的选择与参数优化
配置防盗链
配置隐藏版本号
gzip介绍
配置Apache的网页压缩功能,是使用gzip压缩算法来对网页进行压缩后再传输到客户端浏览器
作用
降低了网络传输的字节数,加快网页加载的速度
节省流量,改善用户的浏览体验
gzip与搜索引擎的抓取工具有着更好的关系
Apache的压缩模块
Apache实现网页压缩的功能模块包括
mod_gzip模块
mod_deflate模块
Apache 1.x
没有内建网页压缩技术,但可使用第三方mod_gzip模块执行压缩
Apache 2.x
在开发的时候,内建了mod_deflate这个模块,取代mod_gzip
mod_gzip模块与mod_deflate模块比较
* 两者均使用gzip压缩算法,运作原理类似
* mod_deflate压缩速度略快,而mod_gzip的压缩比略高
* mod_gzip对服务器CPU的占用要高一些
* 高流量的服务器,使用mod_deflate可能会比mod_gzip加载速度更快
启用网页压缩功能步骤
环境(网页压缩实例)
一台Linux服务器(192.168.13.128)
一台win10测试机
1,远程共享挂载到Linux上
1)在Windows上将LAMP所需压缩软件包共享出来(此处如有问题请看之前的博客相关文章)
2)在Linux上使用远程共享获取文件并挂载到/abc目录下
[root@localhost httpd]# mkdir /abc ##创建挂载点/abc
root@lamp ~]# smbclient -L //192.168.100.3/
Sharename Type Comment
--------- ---- -------
LAMP-C7 Disk
[root@lamp ~]# mount.cifs //192.168.100.3/LAMP-C7 /mnt
##远程挂载软件包到/mnt目录
2,手工编译安装Apache
1)将源码包解压到/opt目录下
[root@lamp mnt]# cd /mnt ##切换到/mnt目录下
[root@lamp mnt]# tar zxvf apr-1.6.2.tar.gz -C /opt/ ##解压源码包到/opt下
...
[root@lamp mnt]# tar zxvf apr-util-1.6.0.tar.gz -C /opt/
....
[root@lampt mnt]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt/
...
[root@lamp mnt]# cd /opt //进入/opt目录
[root@lamp opt]# ls //查看解压的文件
apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh
2)将apr组件包移动到http中并安装编译工具
[root@lamp opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr
[root@lamp opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
[root@localhost opt]# yum -y install \
gcc \ //c语言
gcc-c++ \ //c++语言
make \ //编译工具
pcre-devel \ //pcre语言工具
expat-devel \ //识别标签性语言工具
perl \
pcre \
zlib-devel //数据压缩用的函式库
3)配置安装目录及各种模块
[root@lamp opt]# cd /opt/httpd-2.4.29/
[root@lamp httpd-2.4.29]#./configure \ //配置
--prefix=/usr/local/httpd \
--enable-deflate \ //配置压缩模块
--enable-expires \ //配置缓存模块(下一个缓存实验需要)
--enable-so \ //apache核心模块开启
--enable-rewrite \ //开启重写功能,防盗链
--enable-charset-lite \ //支持字符集,简体中文
--enable-cgi //通用网关接口
...
4)编译和安装
[root@lamp httpd-2.4.29]# make //生成可执行的二进制文件
...
[root@lamp httpd-2.4.29]# make install //复制二进制文件到系统,配置应用环境
...
5)配置http主配置文件
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/
[root@localhost httpd]# ls
bin cgi-bin error icons lib man modules
build conf htdocs include logs manual
[root@localhost httpd]# cd conf/ ##切换到http主配置文件中
[root@localhost conf]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf ##方便管理创建软连接
##为方便操作覆盖原启动脚本,并添加到service管理器中
[root@localhost conf]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd //复制apache启动脚本覆盖httpd原始的启动脚本
[root@localhost conf]# vim /etc/init.d/httpd
#!/bin/sh
# chkconfig: 35 85 21
# description: Apache is a World Wide Web server //在#!/bin/sh下行插入这两行内容
[root@localhost conf]# chkconfig --add httpd //将httpd加入到SERVICE管理器中
[root@localhost conf]# vim /etc/httpd.conf ##配置主配置文件
Listen 192.168.13.128:80 ##设置监听地址
#Listen 80
ServerName www.kgc.com:80 ##设置域名
LoadModule deflate_module modules/mod_deflate.so ##启用压缩模块
LoadModule headers_module modules/mod_headers.so ##启用头部模块
##大G到末行添加一下内容
LoadModule filter_module modules/mod_filter.so
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml test/java
script text/jpg text/png ##支持压缩类型
DeflateCompressionLevel 9 ##高压缩比
SetOutputFilter DEFLATE ##默认过滤器加载
</IfModule>
[root@localhost conf]# service httpd start ##重启服务
[root@localhost conf]# systemctl stop firewalld.service
[root@localhost conf]# setenforce 0
[root@localhost conf]# cd /usr/local/httpd/bin/ ##查看deflate模块启动状态
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES | grep "deflate"
deflate_module (shared)
6)切换到站点,编辑网页内容
[root@localhost conf]# cd ..
[root@localhost httpd]# pwd
/usr/local/httpd
[root@localhost httpd]# cd htdocs/
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# cat index.html
<html><body><h1>It works!</h1></body></html>
3,在win10中安装fiddler抓包工具
4,编辑网页,添加一个图片
1)切换到你的共享挂载点,将图片复制到站点中
[root@localhost htdocs# cd /mnt ##切换到挂载点
[root@localhost mnt]# cp kali.jpg /usr/local/httpd/htdocs/ ##将图片复制到站点中
[root@localhost mnt]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls ##查看图片复制成功
index.html kali.jpg
2)编辑站点的首页内容
[root@localhost ~]# cd /usr/local/httpd/
[root@localhost httpd]# cd htdocs/ ##切换到站点
[root@localhost htdocs]# ls
index.html kali.jpg
[root@localhost htdocs]# vim index.html ##编辑网页内容,将图片加入到网页中
<html><body><h1>It works!</h1>
<img src="kali.jpg"/> ##将图片放到网页中
</body></html>
5,测试网页,查看抓包信息
配置网页的缓存时间
通过mod_expire模块配置Apache,使用网页能在客户端浏览器缓存一段时间,以避免重复请求
启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
启用网页缓存功能步骤
环境
编译安装和前部分是一样的,配置加上了缓存模块,以下为配置缓存模块操作
1,配置主配置文件,开启缓存模块
[root@localhost httpd-2.4.29]# vim /etc/http.conf
LoadModule expires_module modules/mod_expires.so ##开启缓存模块
<IfModule mod_expires.c> ##大G末行添加配置文件
ExpiresActive On
ExpiresDefault "access plus 50 seconds"
</IfModule>
2,启动Apachectl,关闭防火墙并重启服务
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/bin ##测试语法是否有错误
[root@localhost bin]# ./apachectl -t
[root@localhost bin]# ./apachectl start ##开启
[root@localhost bin]# systemctl stop firewalld.service ##关闭防火墙
[root@localhost bin]# setenforce 0
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES | grep "expires" ##查看模块开启状态
expires_module (shared)
3,重新用测试机访问网页,测试抓包
谢谢阅读!!!
程序猿的技术大观园:www.javathinker.net
|
|