欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Apache网页与安全优化之--网页压缩

程序员文章站 2022-03-15 23:37:02
...

前言:

Apache作为最常用的网站服务器,其在部署之后都是使用默认配置。

如今针对不同的生产环境,我们需要作出不同的优化方案,不仅要考虑Apache的稳定,更要考虑其安全性

一、Apache网页优化

1.1 网页压缩
1.1.1 Apcahe网页优化概述
  • 在企业中,部署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 配置网页压缩功能
  • 启用网页压缩功能步骤

    查看是否安装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压缩

二、Apache网页压缩实验

2.1 手工编译apache
[aaa@qq.com ~]# 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 aaa@qq.com//192.168.181.1/LAMP-C7:  
[@localhost ~]# cd /mnt
[aaa@qq.com 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

  • 解压跨平台组件包和源码包
[aaa@qq.com mnt]# tar zxvf apr-1.6.2.tar.gz -C /opt
[aaa@qq.com mnt]# tar zxvf apr-util-1.6.0.tar.gz -C /opt
...............省略部分内容
[aaa@qq.com mnt]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt
...............省略部分内容
[aaa@qq.com mnt]# cd /opt
[aaa@qq.com opt]# ls
apr-1.6.2  apr-util-1.6.0  httpd-2.4.29  rh
  • 安装编译器和其他工具
[aaa@qq.com opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr
[aaa@qq.com opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
[aaa@qq.com opt]#yum -y install \
gcc \				#编译器
gcc-c++ \			#编译器
make \				#make工具
pcre-devel \		#支持正则表达式的工具
expat-devel \		#使网站能够解析标签语言的工具
perl \				#perl语言工具
zlib-devel			#支持压缩功能的环境包
2.1.2 修改配置文件
[aaa@qq.com 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行的请求头部功能开启)

以上功能模块都确认开启后,在配置文件末尾加上如下信息

<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>
#支持网页、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
[aaa@qq.com conf]# /usr/local/httpd/bin/apachectl -t  #检查语法
Syntax OK

启动服务

[aaa@qq.com conf]# /usr/local/httpd/bin/apachectl start		#使用启动脚本的方式启动apache
[aaa@qq.comhost conf]# systemctl stop firewalld.service 
[aaa@qq.com conf]# setenforce 0
#关闭防火墙和增强性安全功能
2.1.3 验证模块
  • 查看站点首页
[aaa@qq.com conf]# cd ..
[aaa@qq.com httpd]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules
[aaa@qq.com httpd]# cd htdocs   #httpd的站点首页在htdocs中
[aaa@qq.com htdocs]# ls
index.html
[aaa@qq.com htdocs]# cat index.html  #可以在站点首页简单修改(例如嵌入图片)
<html><body><h1>It works!</h1></body></html>

验证模块

[aaa@qq.com htdocs]# cd /usr/local/httpd/bin/ #进入启动脚本目录bin/
[aaa@qq.com 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
[aaa@qq.com bin]# ./apachectl -t -D DUMP_MODULES |grep "deflate"  (检查是否支持deflate功能模块)
 deflate_module (shared)
2.2 验证

开启一台win10虚拟机模拟客户机,安装抓包工具
Apache网页与安全优化之--网页压缩

使用浏览器访问地址
Apache网页与安全优化之--网页压缩

查看抓包工具,可见客户机默认支持压缩功能
Apache网页与安全优化之--网页压缩

现在我们在站点首页中添加图片

[aaa@qq.com /]# cd /mnt
[aaa@qq.com 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
[aaa@qq.com mnt]# cp dog.jpg /usr/local/httpd/htdocs/
[aaa@qq.com mnt]# cd /usr/local/httpd/htdocs/
[aaa@qq.com htdocs]# ls
dog.jpg  index.html
[aaa@qq.com htdocs]# vim index.html 
<html><body><h1>It works!</h1>
<img src="dog.jpg"/>		#在站点首页添加图片
</body></html>
--------》wq
  • 再次使用客户机访问站点

Apache网页与安全优化之--网页压缩

  • 查看抓包工具
    Apache网页与安全优化之--网页压缩

已将图片进行了gzip压缩

总结:

我们在网页嵌入图片、视频等其他文件的时候会在传输端口的时候会做gzip压缩再传输。
本篇博客介绍了Apache网页与安全优化中的网页压缩,之后会继续介绍Apache的网页缓存、防盗链与隐藏版本的优化

相关标签: Apache