文章目录
前言
- Apache作为最常用的网站服务器,其在部署之后都是使用默认配置。
- 现今,针对不同的生产环境,我们需要作出不同的针对优化,不仅要考虑Apache的稳定,更要考虑其安全性
一:Apache网页优化
1.1:网页压缩
1.1.1:网页优化概述
- 在企业中,部署Apache后会有默认的配置参数,如果不及时进行优化配置,在当今互联网时代,会引发网站很多问题
- 为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache的优化内容
- 优化内容
配置网页压缩功能
工作模式的选择与参数优化
配置防盗链
配置隐藏版本号
…
1.1.2:网页gzip概述
- 配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后在传输到客户端浏览器
- 作用
- 降低了网络传输的字节数,加快网页加载的速度
- 节省流量,改善用户的浏览体验
- gzip与搜索引擎的抓取工作有着更好的关系
1.1.3: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加载速度更快
1.1.4:配置网页压缩功能
-
启用网页压缩功能步骤
1,查看是否安装mod_deflate模块
2.修改配置文件,启用压缩功能
3,抓包测试 -
1.查看是否安装mod_deflate模块
-
执行apachectl -t -D DUMP_MODULES命令
-
如果输出中没有deflate_module(static),说明编译时没有安装mod_deflate模块
-
没有安装则需要从新编译安装
-
./configure --enable-deflate…
-
make && make install
-
-
2.在配置httpd.conf中配置开启gzip功能
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript '//设置对什么样的内容启用gzip压缩' DeflateCompressionLevel '//代表压缩级别' SetOutputFilter DEFLATE '//代表启用deflate模块对本站点的输出进行gzip压缩'
-
3.重启Apache服务,再用浏览器访问测试网站
在浏览器中选择"查看元素" 可以查看到有"Accept-Encoding:gzip"表示压缩已生效
并用Fiddler工具抓包,进行对比分析
1.2:Apache网页压缩实操
//上传rpm包到/opt
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar zxvf apr-1.6.2.tar.gz
[root@localhost opt]# tar jxvf httpd-2.4.29.tar.bz2
[root@localhost opt]# ls
apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2
[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 httpd-2.4.29]# yum install zlib-devel -y
[root@localhost httpd-2.4.29]# yum -y install gcc gcc-c++ make pcre-devel expat-devel perl
[root@localhost httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-deflate --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
[root@localhost httpd-2.4.29]# make && make install
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@localhost httpd-2.4.29]# vim /etc/httpd.conf
.......
LoadModule headers_module modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so //取消注释
LoadModule filter_module modules/mod_filter.so
//G在尾部添加
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascrip text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
</IfModule>
//修改
ServerName www.kgc.com:80
Listen 192.168.100.120:80
#Listen 80
[root@localhost httpd-2.4.29]# /usr/local/httpd/bin/httpd -tSyntax OK
1.2.5:关闭防火墙,开启服务
[root@localhost httpd-2.4.29]# /usr/local/httpd/bin/apachectl start
[root@localhost httpd-2.4.29]# netstat -ntap |grep 80
tcp 0 0 192.168.100.120:80 0.0.0.0:* LISTEN 106591/httpd
[root@localhost httpd-2.4.29]# systemctl stop firewalld.service
[root@localhost httpd-2.4.29]# setenforce 0
[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 htdocs/
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# vim index.html
<html><body><h1>It works!</h1></body></html>
<img src="game.jpg"/>
~
[root@localhost htdocs]# rz -E
rz waiting to receive.
[root@localhost htdocs]# ls
game.jpg index.html
[root@localhost htdocs]# cd /usr/local/httpd/bin
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES |grep "deflate"
deflate_module (shared)
'//查看是否安装mod_deflate模块'
1.3:验证配置
1.3.1:验证配置
- VMware打开一台Windows用来验证
- Windows中安装检验工具fiddler
客户机验证
1.3:网页缓存
1.3.1:配置网页的缓存时间概述
- 通过mod_expire模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求
- 启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
1.3.2:启用网页的缓存功能步骤
- 1.查看是否安装mod_expire模块
2、修改配置文件启用缓存功能
3.抓包测试
1.3.3:启用功能步骤详解
-
查看是否安装mod_expire模块
-
/usr/local/apache/bin/apachectl -t -D DUMP_MODULES
-
如果输出中没有expires_module(static),则说明编译时没有安装mod_expires
-
若没有安装则需要重新编译安装
- ./configure --enable-expires…
make && make install
- ./configure --enable-expires…
-
修改httpd.conf配置文件
-
启用mod_expires模块,并设置http协议下任意格式的文档均60秒后过期
-
<IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 60 seconds" </IfModule>
-
-
- 重启httpd服务
-
再次访问测试网站,使用抓包工具Fiddler进行数据抓取分析
1.4:Apache网页缓存实操
1.4.1:环境配置
- 环境同Apache网页压缩
- 编译器安装也相同
1.4.2:configure配置和make&&make install
[root@localhost httpd-2.4.29]#./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-expires
[root@localhost httpd-2.4.29]# make
[root@localhost httpd-2.4.29]# make install
1.4.3:配置启动脚本
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf '//建软链接便于管理'
[root@localhost httpd-2.4.29]# vim /etc/httpd.conf
ServerName www.kgc.com:80 '//修改域名'
Listen 192.168.100.120:80 '//修改监听地址'
#Listen 80
LoadModule expires_module modules/mod_expires.so '//开启缓存模块'
'//下面验证语法格式'
[root@localhost httpd-2.4.29]# pwd
/opt/httpd-2.4.29
1.4.4:开启服务,关闭防火墙
[root@localhost bin]# cd /usr/local/httpd/bin
[root@localhost bin]# ./apachectl start
[root@localhost bin]# netstat -ntap |grep 80
tcp 0 0 192.168.100.120:80 0.0.0.0:* LISTEN 42665/httpd
[root@localhost bin]# systemctl stop firewalld.service
[root@localhost bin]# setenforce 0
1.4.5: 开启网页缓存
[root@localhost bin]# vim /etc/httpd.conf //这里是软链接过来的配置文件
....... //G末行添加
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 50 seconds"
</IfModule>
[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 bin
[root@localhost bin]# ./apachectl -t
Syntax OK '//语法格式没问题'
'//检测expires模块'
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES | grep "expires"
expires_module (shared)
1.4.6:编辑首页文件和插入图片
[root@localhost bin]# cd ../
[root@localhost httpd]# cd htdocs/
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# vim index.html
[root@localhost htdocs]# rz -E
rz waiting to receive.
[root@localhost htdocs]# ls
game.jpg index.html
[root@localhost htdocs]# cd /usr/local/httpd/bin
[root@localhost bin]# ls
ab apxs envvars-std htdigest logresolve
apachectl checkgid fcgistarter htpasswd rotatelogs
apr-1-config dbmmanage htcacheclean httpd
apu-1-config envvars htdbm httxt2dbm
[root@localhost bin]# ./apachectl restart
- 修改缓存时间验证
[root@localhost bin]# vim /etc/httpd.conf
...省略内容
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 300 seconds" '//文件末尾,将60秒修改为其他时间,验证'
</IfModule>
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start
缓存时间已经改为300s,实验成功