>>分享Java Web开发技术,并且对孙卫琴的《Tomcat与Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 23928 个阅读者 刷新本主题
 * 贴子主题:  Apache网页与安全优化——网页压缩及缓存(理论实践相结合!) 回复文章 点赞(0)  收藏  
作者:日月光华    发表时间:2024-04-14 05:15:30     消息  查看  搜索  好友  邮件  复制  引用

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加载速度更快

启用网页压缩功能步骤
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
环境(网页压缩实例)

一台Linux服务器(192.168.13.128)
一台win10测试机

1,远程共享挂载到Linux上

1)在Windows上将LAMP所需压缩软件包共享出来(此处如有问题请看之前的博客相关文章)
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
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抓包工具
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
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,测试网页,查看抓包信息
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

配置网页的缓存时间

通过mod_expire模块配置Apache,使用网页能在客户端浏览器缓存一段时间,以避免重复请求
启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
启用网页缓存功能步骤
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
环境

编译安装和前部分是一样的,配置加上了缓存模块,以下为配置缓存模块操作

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,重新用测试机访问网页,测试抓包
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
谢谢阅读!!!



程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->Java语言的基本语法和规范
  JavaWeb开发-->使用Session(Ⅰ)
  JSP与Hibernate开发-->JPA API的高级用法
  Java网络编程-->Socket用法详解
  精通Spring-->Vue组件开发高级技术
  Vue3开发-->Vue指令
  HTTP 基本工作原理
  JSP 语法
  Servlet 类的包名,存放路径和打包
  Servlet 点击计数器范例
  Servlet 访问客户端 HTTP 请求 信息
  好消息《Tomcat与JavaWeb开发技术详解》第3版出版,业界大咖...
  解决HttpServletRequest的输入流只能读取一次的问题
  通过URLConnection类访问网上URL资源
  《Tomcat与JavaWeb开发技术详解》第三版升级感悟
  用@WebFilter配置过滤器
  HTTP GET和POST方式的区别
  EL表达式语言介绍
  Servlet 容器 Jetty 9.4.10 发布,大量错误修复和改进
  观看视频:孙卫琴讲解的Servlet等对象的生命周期,生动直观!
  ServletConfig和ServletContext详解(转移自: 《Tomcat与Java...
  更多...
 IPIP: 已设置保密
树形列表:   
近期在彩卷博弈界出現了一款遊戲,非常熱門,叫做「[u... kericnnoe 2024-04-14 05:15:30
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。