【企业化架构部署】Apache网页优化

文章目录

  • 一、Apache网页优化概述
    • 1.优化内容
    • 2.网页压缩
      • 2.1gzip概述
      • 2.2作用
      • 2.3Apache的压缩模块
        • 概述
        • mod_gzip模块与mod_deflate模块
    • 3.配置网页压缩功能
      • 3.1启用网页压缩功能步骤
      • 3.2具体操作步骤
    • 4.配置网页缓存功能
      • 4.1启用网页压缩功能步骤
      • 4.2具体操作步骤
  • 二、Apache安全优化
    • 1.隐藏版本信息
      • 1.1配置Apache隐藏版本信息
    • 2.配置防盗链
      • 2.1环境配置
      • 2.2盗链模拟步骤
      • 2.3配置Apache实现防盗链


一、Apache网页优化概述

  在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代。

  为了适应企业需求,就需要考虑如何提升Apache的i性能与稳定性,这就是Apache优化的内容。

1.优化内容

  • 配置网页压缩功能

  • 配置网页缓存

  • 配置隐藏版本号

  • 配置防盗链

2.网页压缩

2.1gzip概述

  gzip是一种流行的文件压缩算法,目前应用非常广泛, 尤其是在Linux平台。当使用gzip压缩一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。利用Apache中的gzip模块,可以使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器。经过压缩后,实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加速的速度。

2.2作用

  • 降低了网络传输的字节数
  • 加快网页加载的速度 节省流量
  • 改善用户的浏览体验 gzip与搜索引擎的抓取工具具有更好的关系

2.3Apache的压缩模块

概述

  Apache实现网页压缩的功能模块包括mod_gzip模块与mod_deflate模块。

Apache 1.x

  没有内建网页压缩技术,但可使用第三方modgzip 模块执行压缩

Apache 2.x

  在开发的时候,内建了mod deflate这个模块,取代mod gzip

mod_gzip模块与mod_deflate模块

  • 两者均使用gzip压缩算法,运作原理类似
  • mod_ deflate压缩速度略快,而mod_gzip的压缩比略高
  • mod_ gzip对服务器CPU的占用要高一些
  • 高流量的服务器,使用mod_ deflate可能会比mod_ gzip 加载速度更快

3.配置网页压缩功能

3.1启用网页压缩功能步骤

在这里插入图片描述

3.2具体操作步骤

检查是否已安装mod_defalte模块

[root@localhost httpd]# apachectl -t -D DUMP_MODULES | grep "deflate"

如果没有安装mod_deflate 模块,重新编译安装 Apache 添加 mod_deflate 模块

[root@localhost httpd]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# yum install -y zlib-devel
[root@localhost httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate
###备份主配置文件
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/conf/
[root@localhost conf]# ls
extra  httpd.conf  magic  mime.types  original
[root@localhost conf]# mv httpd.conf httpd.conf.bak
[root@localhost conf]# systemctl stop httpd.service 
###重新编译安装,生成新的配置文件
[root@localhost conf]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# make -j2 && make install

配置 mod_deflate 模块启用

[root@localhost httpd-2.4.29]# cd /usr/local/httpd/conf/
[root@localhost conf]# vim /usr/local/httpd/conf/httpd.conf
###52行修改,端口号
Listen 192.168.145.15:80
###105行,取消注释,打开模块
LoadModule deflate_module modules/mod_deflate.so
###198行修改,取消注释,设置域名
ServerName www.abc.com:80
###最后一行开启gzip功能
<IfModule mod_deflate.c>
###设置对什么样的内容进行gzi压缩
AddOutputFilterByType DEFLATE text/hml text/plain text/css text/xml text/javascrpit text/jpg text/png
###设置压缩级别1-9之间
DeflateCompressionLevel 9
###启用deflate模块对本站点的输出进行gzip压缩
SetOutputFilter DEFLATE
</IfModule>

...

检查安装情况,启动服务

###验证配置文件的配置是否正确
[root@localhost conf]#apachectl -t			
###检查 mod_deflate 模块是否已安装
[root@localhost conf]# apachectl -t -D DUMP_MODULES | grep "deflate"
 deflate_module (shared)
###重启服务
[root@localhost conf]# systemctl start httpd.service

测试缓存是否生效

###编写网页文件
[root@localhost conf]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# vim /usr/local/httpd/htdocs/index.html
<html>
<body>
        <h1>It works!</h1>
        <img src="/opt/game.jpg"/>
</body>
</html>
[root@localhost htdocs]# systemctl restart httpd.service

浏览器访问 ,使用F12消息查看

在浏览器中选择“查看元素”可以看到有“AcceptEncoding:gzip”表示压缩已经生效

在这里插入图片描述

4.配置网页缓存功能

4.1启用网页压缩功能步骤

在这里插入图片描述

4.2具体操作步骤

检查是否安装 mod_expires 模块

[root@localhost ~]# apachectl -t -D DUMP_MODULES | grep "expires"

如果没有安装mod_expires 模块,重新编译安装 Apache 添加 mod_expires模块

[root@localhost ~]# systemctl stop httpd.service
[root@localhost ~]# cd /usr/local/httpd/conf/
[root@localhost conf]# ls
extra  httpd.conf  magic  mime.types  original
[root@localhost conf]# mv httpd.conf httpd.conf.bak1
[root@localhost conf]# yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
[root@localhost conf]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-so \
> --enable-rewrite \
> --enable-charset-lite \
> --enable-cgi \
> --enable-deflate \
###加入mod_expires 模块
> --enable-expires
###编译安装
[root@localhost httpd-2.4.29]# make -j2 && make install

配置 mod_expires 模块启用

[root@localhost httpd-2.4.29]# cd /usr/local/httpd/conf/
[root@localhost conf]# ls
extra  httpd.conf  httpd.conf.bak1  magic  mime.types  original
[root@localhost conf]# vim httpd.conf
###--52行--修改
Listen 192.198.145.15:80
###--111行--取消注释
###开启mod_expires 模块
LoadModule expires_module modules/mod_expires.so		
###--199行--取消注释,修改
ServerName www.abc.com:80
###--末行添加--
<IfModule mod_expires.c>
  ###打开网页缓存功能
  ExpiresActive On		
  ###设置缓存60秒
  ExpiresDefault "access plus 60 seconds"	
</IfModule>

检查安装情况,启动服务

###验证配置文件的配置是否正确
[root@localhost conf]# apachectl -t
Syntax OK
###检查 mod_deflate 模块是否已安装
[root@localhost conf]# apachectl -t -D DUMP_MODULES | grep "expires"
 expires_module (shared)
###启动httpd服务
[root@localhost conf]# systemctl restart httpd

测试缓存是否生效

在Windows系统中依次安装 Microsoft.NET4 和fiddler 软件,打开fiddler 软件
选择 inspectors ---> 选择 Headers
浏览器访问 http://192.168.80.10 ,双击200消息查看 Expires 项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P0J2Gdw9-1685425507145)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230530104454195.png)]

二、Apache安全优化

1.隐藏版本信息

  Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患。在生产环境中要配置Apache隐藏版本信息。

1.1配置Apache隐藏版本信息

[root@localhost ~]# cd /usr/local/httpd/conf/
[root@localhost httpd-2.4.29]# vim /usr/local/httpd/conf/httpd.conf
###--491行--取消注释
Include conf/extra/httpd-default.conf
[root@localhost conf]# vim extra/httpd-default.conf 
###--55行--修改
###将原本的 Full 改为 Prod,只显示名称,没有版本
ServerTokens Prod 
###重启httpd服务
[root@localhost conf]# systemctl restart httpd.service 

ServerTokens 表示 Server 回送给客户端的响应头域是否包含关于服务器 OS 类型和编译过的模块描述信息。

浏览器访问 http://192.168.145.15或者http://www.abc.com
查看 Server 项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-leoLGeIN-1685425507145)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230530104937310.png)]

2.配置防盗链

  防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源。如果别人盗用网站的这些静态资源,明显的实惠增大服务器的带宽压力,作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用。

2.1环境配置

IP地址域名用途
192.168.145.15www.abc.com源主机
192.168.145.30www.accp.com盗链网站
客户端Windows11火狐浏览器或者谷歌浏览器

2.2盗链模拟步骤

  一般配置防盗链需要做以下几个步骤:

     ● 两台主机配置测试页面

     ● 盗链网站的测试网页,盗用源主机网站目录下的一个logo.jpg文件

     ● 在Windows中访问验证

2.3配置Apache实现防盗链

检查是否安装 mod_rewrite 模块

[root@localhost ~]# apachectl -t -D DUMP_MODULES | grep "rewrite"

如果没有安装mod_rewrite 模块,重新编译安装 Apache 添加 mod_rewrite模块

###停止httpd服务
[root@localhost ~]# systemctl stop httpd.service
###进入主配置文件目录
[root@localhost ~]# cd /usr/local/httpd/conf
[root@localhost conf]# mv httpd.conf httpd.conf.bak2
####安装模块
[root@localhost conf]# yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
[root@localhost conf]#cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
###加入mod_rewrite 模块
--enable-rewrite \					
--enable-charset-lite \    
--enable-cgi \
--enable-deflate \
--enable-expires
###重新编译
[root@localhost httpd-2.4.29]#make -j2 && make install

配置 mod_rewrite 模块启用

[root@localhost httpd-2.4.29]# cd /usr/local/httpd/conf/
[root@localhost conf]# vim httpd.conf
###--224行--
<Directory "/usr/local/httpd/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    ###打开 rewrite 功能,加入 mode_rewrite 模块内容
    RewriteEngine On
    ####设置匹配规则
    RewriteCond %{HTTP_REFERER} !^http://abc.com/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://abc.com$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.abc.com/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.abc.com/$ [NC]
    ###设置跳转动作
    RewriteRule .*\.(gif|jpg|swf)$ http://www.abc.com/error.png
</Directory>

RewriteCond %{HTTP_REFERER} !^http://www.abc.com/.*$ [NC] 的字段含义:

  %{HTTP_REFERER} :存放一个链接的 URL,表示从哪个链接中转访问目录下的静态资源。

  !^”:表示不以后面的字符串开头。

  http://www.abc.com”:是本网站的路径,按整个字符串匹配。

  .*$”:表示以任意字符结尾。

  [NC] :表示不区分大小写字母。

RewriteRule .*\.(gif|jpg|swf)$ http://www.abc.com/error.png 的字段含义:

  . :表示匹配一个字符。

  *”:表示匹配 0 到多个字符,与.合起来的意思是匹配 0 到多次前面的任意字符,如果是 1 到多次匹配可以用+表示。

  “\.”:在这里的\是转义符,\.就代表符号.的意思。因为.在指令中是属于规则字符,有相应的含义, 如果需要匹配,需要在前面加个转义符\,其它规则字符如果需要匹配,也做同样处理。

  (gif|jpg|swf)$ :表示匹配gifjpgswf任意一个,$表示结束。最后的规则是以.gif.jpg.swf结尾, 前面是1到多个字符的字符串,也就是匹配图片类型的文件。

  http://www.abc.com/error.png :表示转发到这个路径 。

整个配置的含义是 使用本网站以外的网站域名 访问本站的图片文件时,显示error.png 这个图片。

网页准备

Web源主机配置

[root@localhost conf]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
error.png  game.jpg  index.html
[root@localhost htdocs]# cat index.html 
<body><h1>It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!</h1>
<img src="game.jpg"/>
</body></html>
###临时添加域名解析
[root@localhost htdocs]# echo "192.168.145.15 www.abc.com" >> /etc/hosts 
[root@localhost htdocs]# echo "192.168.145.30 www.accp.com" >> /etc/hosts 

盗链网站主机配置


[root@localhost conf]# cd /usr/local/httpd/htdocs
[root@localhost htdocs]# vim index.html
<body><h1>this is accp.com!</h1>
<img src="http://www.abc.com/game.jpg"/>
</body></html>
###临时添加域名解析
[root@localhost htdocs]# echo "192.168.145.15 www.abc.com" >> /etc/hosts
[root@localhost htdocs]# echo "192.168.145.30 www.accp.com" >> /etc/hosts

yum安装的httpd服务的默认路径为/var/www/html/

在盗图网站主机上进行浏览器验证

http://www.accp.com

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/25671.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之~工厂系列(简单工厂、工厂方法、抽象工厂)

目录 简单工厂模式 工厂方法模式 简单工厂 VS 工厂方法 抽象工厂模式&#xff1a; 拓展&#xff1a; 利用简单工厂模式优化抽象工厂 利用反射抽象工厂 进行优化 反射配置文件抽象工厂进行优化 简单工厂模式 优点&#xff1a;简单工厂模式的最大优点在于工厂类包含…

计算机专业主要学习什么

2020计算机专业主要学习什么 1计算机专业都学习哪些方面的知识 1、可视化编程 掌握编程方法和可视化技术&#xff0c;熟悉一个可视化平台及其软件开发技术。能够获取Delphi编程人员系列&#xff0c;Java Basic或VB开发专家认证。 就业方向&#xff1a;企业&#xff0c;政府&…

vue前端分页功能怎么实现

Vue前端分页功能可以通过以下几个步骤实现&#xff1a; 1. 安装分页组件库&#xff08;如vue-pagination-2&#xff09;&#xff1a; bash npm install vue-pagination-2 2. 在Vue项目中引入并注册分页组件&#xff1a; javascript import Vue from vue; import Pagination fr…

传地址给组件并让该组件用到地址在背景图片中的方法

问题 这是我在开发中遇到的问题。在网站的分页面中&#xff0c;背景图片的格式几乎一模一样。只是上面的文字和图片不一样而已。 所以我希望写一个组件&#xff0c;然后页面只需要传入背景图片地址和标题就可以显示出相关内容。 于是我动手写了&#xff0c;大致思路是一个盒…

判断点在多边形内算法的C++实现

本篇博客介绍了使用射线法判断点在多边形内部还是外部的算法&#xff0c;并通过C做了具体实现 1. 算法思路 判断平面内点是否在多边形内有多种算法&#xff0c;其中射线法是其中比较好理解的一种&#xff0c;而且能够支持凹多边形的情况。该算法的思路很简单&#xff0c;就是…

AMEYA360:纳芯微推出车规级耐高压、三线霍尔开关及锁存器NSM101x系列

纳芯微推出全新三线制车规霍尔效应开关/锁存器NSM101x系列&#xff0c;为数字位置检测提供高精度的解决方案&#xff0c;可被广泛应用于汽车执行器等的位置检测。 NSM101x产品系列包含了3个产品型号&#xff0c;即NSM1011(单极霍尔开关)、NSM1012(全极霍尔开关)、NSM1013(霍尔锁…

【Unity】Playable使用细则

【Unity】Playable使用细则 本文基于Unity 2021.3 API。 本文介绍官方文档中没提及的Playable使用限制、注意事项、Bug及规避方案&#xff0c;不是Playable的入门教程&#xff01; 如果你还不熟悉Playable的基础用法&#xff0c;请先学习以下官方文档和示例&#xff1a; Playa…

基于STM32的定时器--定时中断(HAL库)

基于STM32的定时器--定时中断&#xff08;HAL库&#xff09; 介绍引言定时器介绍 实例项目介绍准备设计流程 介绍 引言 本文旨在介绍如何使用STM32CubeMX配置KEIL 5开发一个每10us定时器中断触发一次的项目。帮助初学者入门STM32的定时器使用。 定时器介绍 定时器是STM32微…

chatgpt赋能python:Python升降序排列数字

Python升降序排列数字 在Python编程中&#xff0c;排序是一个非常常见并且重要的操作。Python提供了多种排序算法以满足不同的需求。 排序算法 Python中内置的排序算法有两种&#xff1a;Timsort和Quicksort。其中Timsort是一种混合排序算法&#xff0c;结合了插入排序和归并…

Linux系统中源码安装1.8.x版本Arduino IDE

本文内容参考&#xff1a; Ubuntu22.04安装Arduino IDE及Arduino UNO&#xff08;使用CH341驱动&#xff09;调试方法__KILLMILEDC_的博客-CSDN博客 在Linux上下载arduino_不说话的白帽子的博客-CSDN博客 https://guoqing.blog.csdn.net/article/details/88913063?spm1001.…

Linux NGINX服务 ReWrite^location

ReWrite^location 从功能看 rewrite 和 location 似乎有点像&#xff0c;都能实现跳转&#xff0c;主要区别在于 rewrite 是在同一域名内更改获取资源的路径&#xff0c;而 location 是对一类路径做控制访问或反向代理&#xff0c;还可以proxy_pass 到其他机器。 rewrite 对访问…

c++ new 源码学习一下

之前有一篇文章介绍了 new 的一些用法 c new 在指定内存上创建对象&#xff0c;今天结合源码来学习一下 new 更详细的用法。相关的源码&#xff1a;gcc git 1&#xff0c;void* operator new (std::size_t size); 我们可以在头文件<new>里看到它的原型&#xff1a; _G…

C++11 -- lambda表达式

文章目录 lamaba表达式的引入lambda表达式语法lamabda达式各部分说明捕获列表说明 lamaba表达式底层原理探索 lamaba表达式的引入 在C11之前,如果我们想对自定义类型Goods排序,可以根据姓名,价格,学号按照从大到小或者从小到大的方式排序,可是,这样我们要写额外写6个相关的仿函…

Quest 3初体验,或是苹果MR最大竞争对手

随着苹果MR临近&#xff0c;我们从彭博Mark Gurman了解到更多消息。昨日&#xff0c;Mark Gurman发布了Quest 3上手体验文章&#xff0c;并认为Quest 3可能是苹果MR头显最大的竞争对手。 1&#xff0c;Meta是XR头显领导者 尽管WWDC 23苹果MR将会成为最大的主角&#xff0c;但…

node.js与内置模块

一、目标 能够知道什么是Node.js能够知道Node.js可以做什么能够说出Node.js中的JavaScript的组成部分能够使用fs模块读写操作文件能够使用path模块处理路径能够使用http模块写一个基本的web服务器 二、目录 初始Node.jsfs文件系统模块path路径模块http模块 1.初始Node.js …

macos wireshark 抓取https包

1、启动浏览器 1.1 创建空文件 $ touch /Users/zhujl/Downloads/https/mysslkey.log 2、设置wireshark tls属性&#xff0c;指定tls密钥存储文件 2.1 进入Wireshark Preferfences > Protocols > TLS 属性配置 2.2 勾选上Reassemable TLS records spanning multiple …

设计模式B站学习(一)(java)

这里写目录标题 一、设计模式概述1.1 软件设计模式的产生背景1.2 软件设计模式的概念1.3 学习设计模式的必要性1.4 设计模式分类 二、UML图2.1 类图概述2.2 类图的作用2.3 类图表示法2.3.1 类图表示方法2.3.2 类与类之间关系的表示方法2.3.2.1 关联关系2.3.2.2 聚合关系2.3.2.3…

Selenium的使用

一、基础 1、特点 selenium 是web中基于UI的自动化测试工具&#xff0c;它支持多平台、多语言、多浏览器&#xff0c;还有丰富的API。 2、原理 自动化脚本代码会创建一个http请求发送给浏览器驱动进行解析&#xff0c;浏览器驱动会操控浏览器执行测试&#xff0c;浏览器接着…

ffmpeg编译成wasm

最近在看ffmpeg的源码 https://ffmpeg.xianwaizhiyin.net/ffplay/ https://crifan.github.io/media_process_ffmpeg/website/audio_process/ 做个可运行的例子 代码在找了一堆&#xff0c;可用的版本放在这 https://github.com/killinux/ffmpeg_wasm_demo 先把ffmpeg 编译成 …

内蒙古自治区出台加快充换电基础设施建设实施方案

摘要&#xff1a;为深入贯彻落实《国务院办公厅关于印发新能源汽车产业发展规划&#xff08;2021—2035年&#xff09;的通知》&#xff08;国办发 ﹝2020﹞39号&#xff09;、《国家发展改革委等部门关于进一步提升电动汽车充电基础设施服务保障能力的实施意见》&#xff08;发…