Apache作为最常用的网站服务器,其在部署之后都是使用默认配置。
如今针对不同的生产环境,我们需要作出不同的优化方案,不仅要考虑Apache的稳定,更要考虑其安全性
在企业中,部署Apache后采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置,以前的配置以及不适合当今互联网时代
为了适应企业的需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容
优化内容
配置网页压缩功能
工作模式的选择和参数优化
防盗链
隐藏版本号
…
配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户浏览器
作用
降低了网络传输的字节数,加快网页加载的速度
节省流量,改善用户的浏览体验
gzip与搜索引擎的抓取工具有着更好的关系
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加载速度更快
启用网页压缩功能步骤
查看是否安装mod_deflate模块
修改配置文件,启用压缩功能
抓包测试
查看是否安装mod_deflte模块
执行apache -t D DUMP_MODULES命令
如果输出中没有deflate_module(static),说明编译时没有安装mod_deflate模块
没有安装则需要重新编译安装
./configure --enable-deflate…
make && make install
在配置httpd.conf中配置开启gzip功能
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript #代表对什么样的内容启用gzip压缩
DeflateCompressionLevel #代表压缩级别
SetOutputFilter DEFLATE #代表启用deflate模块对本站点的输出进行gzip压缩
[root@localhost ~]# smbclient -L //192.168.181.1/
Enter SAMBA\root's password:
OS=[Windows 10 Education 18362] Server=[Windows 10 Education 6.3]
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 远程管理
C$ Disk 默认共享
LAMP-C7 Disk
ruanjianbao Disk
Users Disk
安装包 Disk
...............省略部分内容
[@localhost ~]# mount.cifs //192.168.181.1/LAMP-C7 /mnt
Password for root@//192.168.181.1/LAMP-C7:
[@localhost ~]# cd /mnt
[root@localhost mnt]# ls
amoeba-mysql-binary-2.2.0.tar.gz Discuz_X2.5_SC_UTF8.zip mha.rar
apr-1.6.2.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz
apr-util-1.6.0.tar.gz LNMP-C7 php-5.6.11.tar.bz2
awstats-7.6.tar.gz LNMP-C7.rar
cronolog-1.6.2-14.el7.x86_64.rpm mha
[root@localhost mnt]# tar zxvf apr-1.6.2.tar.gz -C /opt
[root@localhost mnt]# tar zxvf apr-util-1.6.0.tar.gz -C /opt
...............省略部分内容
[root@localhost mnt]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt
...............省略部分内容
[root@localhost mnt]# cd /opt
[root@localhost opt]# ls
apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 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
[root@localhost opt]#yum -y install \
gcc \ #编译器
gcc-c++ \ #编译器
make \ #make工具
pcre-devel \ #支持正则表达式的工具
expat-devel \ #使网站能够解析标签语言的工具
perl \ #perl语言工具
zlib-devel #支持压缩功能的环境包
[root@localhost conf]# ln -s /usr/local/httpd/conf/ /etc/httpd.conf #建立软链接,便于管理
进入配置文件,开启压缩功能,确认请求头部配置项与filter 过滤器功能均已开启**(如检查没有三种功能则需要检查之前的配置并重新编译安装)**
LoadModule filter_module modules/mod_filter.so
#搜索/filter(确认101行filter中的过滤器功能开启)
LoadModule deflate_module modules/mod_deflate.so
#搜索/deflate(开启105行压缩功能)
LoadModule headers_module modules/mod_headers.so
#搜索/headers(确认112行的请求头部功能开启)
以上功能模块都确认开启后,在配置文件末尾加上如下信息
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascrip text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
#支持网页、javascrip图片、jpg、png图片,可添加,格式为text/文件扩展名
#DeflateCompressionLevel 9 高压缩比(减少链路带宽、流量)
#SetOutputFilter DEFLAT 让deflat作为默认的过滤器加载
修改监听端口和域名
Listen 192.168.181.173:80 #开启ipv4监听,ip地址指向本机(51行)
#Listen 80 #关闭ipv6端口监听(52行)
ServerName www.demo.com:80 #将域名修改为demo(198行)
----------》wq
[root@localhost conf]# /usr/local/httpd/bin/apachectl -t #检查语法
Syntax OK
启动服务:
[root@localhost conf]# /usr/local/httpd/bin/apachectl start #使用启动脚本的方式启动apache
[root@localhost conf]# systemctl stop firewalld.service
[root@localhost conf]# setenforce 0
#关闭防火墙和增强性安全功能
[root@localhost conf]# cd ..
[root@localhost httpd]# ls
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[root@localhost httpd]# cd htdocs #httpd的站点首页在htdocs中
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# cat index.html #可以在站点首页简单修改(例如嵌入图片)
It works!
验证模块
[root@localhost htdocs]# cd /usr/local/httpd/bin/ #进入启动脚本目录bin/
[root@localhost bin]# ls
ab apr-1-config apxs dbmmanage envvars-std htcacheclean htdigest httpd logresolve
apachectl apu-1-config checkgid envvars fcgistarter htdbm htpasswd httxt2dbm rotatelogs
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES |grep "deflate" (检查是否支持deflate功能模块)
deflate_module (shared)
现在我们在站点首页中添加图片:
[root@localhost /]# cd /mnt
[root@localhost mnt]# ls
amoeba-mysql-binary-2.2.0.tar.gz Discuz_X2.5_SC_UTF8.zip mha
apr-1.6.2.tar.gz dog.jpg mha.rar
apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz
awstats-7.6.tar.gz LNMP-C7 php-5.6.11.tar.bz2
cronolog-1.6.2-14.el7.x86_64.rpm LNMP-C7.rar
[root@localhost mnt]# cp dog.jpg /usr/local/httpd/htdocs/
[root@localhost mnt]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
dog.jpg index.html
[root@localhost htdocs]# vim index.html
It works!
"dog.jpg"/> #在站点首页添加图片
--------》wq
已将图片进行了gzip压缩
我们在网页嵌入图片、视频等其他文件的时候会在传输端口的时候会做gzip压缩再传输。
本篇博客介绍了Apache网页与安全优化中的网页压缩,之后会继续介绍Apache的网页缓存、防盗链与隐藏版本的优化