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

文章目录

        • 前言:
        • 一、Apache网页优化
          • 1.1 网页压缩
            • 1.1.1 Apcahe网页优化概述
            • 1.1.2 gzip介绍
            • 1.1.3 Apache的压缩模块
            • 1.1.4 配置网页压缩功能
        • 二、Apache网页压缩实验
          • 2.1 手工编译apache
            • 2.1.2 修改配置文件
            • 2.1.3 验证模块
          • 2.2 验证
      • 总结:

前言:

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
[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			#支持压缩功能的环境包
2.1.2 修改配置文件
[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
#关闭防火墙和增强性安全功能
2.1.3 验证模块
  • 查看站点首页
[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)
2.2 验证

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

使用浏览器访问地址
Apache网页与安全优化之--网页压缩_第2张图片

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

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

[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
  • 再次使用客户机访问站点

Apache网页与安全优化之--网页压缩_第4张图片

  • 查看抓包工具
    Apache网页与安全优化之--网页压缩_第5张图片

已将图片进行了gzip压缩

总结:

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

你可能感兴趣的:(Apache)