Apache网页的优化、安全与防盗链图文详解

目录
  • 1. Apache 网页的压缩
    • 1.1 检查压缩模块
    • 1.2   安装mod_deflate 模块
    • 1.3 配置 mod_deflate 模块启用
    • 1.4 检查安装情况,启动服务
    • 1.5 测试 mod_deflate 压缩是否生效
  • 2. Apache的网页缓存处理
    • 2.1 检查是否安装缓存模块
    • 2.2 重新编译安装,添加缓存模块
    • 2.3 进行缓存模块的配置
    • 2.4 验证模块的安装,重启服务
    • 2.5 修改测试网页,进行访问测试
  • 3.隐藏Apache的版本信息
    • 3.1 修改httpd的主配置
  • 4.Apache 防盗链
    • 盗链实验展示
      • (1) 盗链主机访问被盗链主机,窃取图片网络路径
      • (2)盗链主机设置自己的网站 图片资源
      • (3)盗取后的访问测试
    • 防盗链措施演示
      • (1)主配配置的修改
      • (2)准备一张提示盗链者的图片,放入网页根目录中
      • (3) 访问展示
  • 总结

1. Apache 网页的压缩

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

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

1.1 检查压缩模块

apachectl -t -D DUMP_MODULES | grep "deflate"

1.2   安装mod_deflate 模块

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

systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate
make && make install

1.3 配置 mod_deflate 模块启用

vim /usr/local/httpd/conf/httpd.conf

  --52行--修改

 --105行--取消注释

 --197行--取消注释,修改

 --末行添加--

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
</IfModule>

1.4 检查安装情况,启动服务

[root@www htdocs]#apachectl -t
Syntax OK
[root@www htdocs]#apachectl -t -D DUMP_MODULES | grep "deflate"
 deflate_module (shared)
[root@www htdocs]#systemctl start httpd

1.5 测试 mod_deflate 压缩是否生效

编辑测试网页: 

cd /usr/local/httpd/htdocs
vim index.html
<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>

测试:

方式一:

在Linux系统中,打开火狐浏览器,右击点查看元素

选择 网络 ---> 选择 HTML、WS、其他 

访问 http://192.168.80.10 ,双击200响应消息查看响应头中包含 Content-Encoding: gzip

方法二:

在Windows系统中依次安装 Microsoft.NET4 和fiddler 软件,打开fiddler 软件

选择 inspectors ---> 选择 Headers

浏览器访问 http://192.168.80.10 ,双击200响应消息查看是否存在 Content-Encoding: gzip 

2. Apache的网页缓存处理

减少网络延迟,加快页面打开速度--缓存比源服务器离客户端更近,因此,从缓存请求内容比从源服务器所用时间更少,缓存的使用能够明显加快页面打开速度,达到更好的体验。

降低服务器的压力--给网络资源设定有效期之后,用户可以重复使用本地的缓存,减少对源服务器的请求,间接降低服务器的压力。同时,搜索引擎的爬虫机器人也能根据过期机制降低爬取的频率,也能有效降低服务器的压力。

减少网络带宽损耗--无论对于网站运营者或者用户,带宽都代表着金钱,当Web缓存副本被使用时,只会产生极小的网络流量,可以有效的降低运营成本。

2.1 检查是否安装缓存模块

apachectl -t -D DUMP_MODULES | grep "expires"

2.2 重新编译安装,添加缓存模块

systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak1

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-expires
make && make install

2.3 进行缓存模块的配置

vim /usr/local/httpd/conf/httpd.conf

 52行和199行的监听继续取消注释,进行相关修改

 --111行--取消注释

 --末行添加--

<IfModule mod_expires.c>
   ExpiresActive On
   ExpiresDefault "access plus 60 seconds"
</IfModule>

2.4 验证模块的安装,重启服务

[root@www httpd-2.4.29]#apachectl -t
[root@www httpd-2.4.29]#apachectl -t -D DUMP_MODULES | grep "expires"
[root@www httpd-2.4.29]#systemctl restart httpd

2.5 修改测试网页,进行访问测试

[root@www httpd-2.4.29]#cd /usr/local/httpd/htdocs

vim index.html
<html>
<body>
<h1>
this is a game
</h1>
<img src="games.jpg"/>
</body>
</html>

 访问测试:

3.隐藏Apache的版本信息

 如果我们开启了Apache服务,那么他人就可以通过F12找到你的Apache版本号,从而利用一些已知的漏洞或者零day漏洞来进行攻击,这是非常危险的。所以为了减少一点――哪怕是一点点的风险,我们最好选择隐藏Apache的版本信息。

3.1 修改httpd的主配置

vim /usr/local/httpd/conf/httpd.conf

 --491行--取消注释

vim /usr/local/httpd/conf/extra/httpd-default.conf

 --55行--修改

 重启服务,测试访问:

如果页面信息没有刷新成功。可以尝试先清空历史记录中的所有信息,再进行访问

4.Apache 防盗链

 互联网时代,网站最为关心的问题就是用户访问量。而吸引用户的往往就是新颖的标题,图片及其内容,而承载着这些,需要占用服务器的资源。而有些缺德企业会将自己网站中图片重定向到你的网站上,读取你的图片,占用着你的带宽,服务器资源,但访问量却被它所占据。

所以apache防盗链的设置很有必要。

盗链实验展示

本实验中我准备了两台虚拟机,一台是源码编译安装apche服务的主机,作为被盗链的主机,域名设置为www.test.com      另一台为yum安装apache服务的主机,作为盗链的主机,域名设置为www.test1.com

(1) 盗链主机访问被盗链主机,窃取图片网络路径

(2)盗链主机设置自己的网站 图片资源

(3)盗取后的访问测试

注意:本次测试访问的是盗链的主机,探究图片的来源 

防盗链措施演示

(1)主配配置的修改

 因为本机源码编译时,已经下载了相关模块,所以直接修改配置。如果没有下载相关的模块,还要进行下载配置。

下载配置方法:

systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak2

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \					#加入mod_rewrite 模块
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-expires

make && make install

修改主配置:

vim /usr/local/httpd/conf/httpd.conf

--157行--取消注释 

 --224行--进行配置添加

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

  • “%{HTTP_REFERER}” :存放一个链接的 URL,表示从哪个链接中转访问目录下的静态资源。
  • “!^” :表示不以后面的字符串开头。
  • “http://www.test.com” :是本网站的路径,按整个字符串匹配。
  • “.*$” :表示以任意字符结尾。

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

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

  • “.” :表示匹配一个字符。
  • “*” :表示匹配 0 到多个字符,与“.”合起来的意思是匹配 0 到多次前面的任意字符,如果是 1 到多次匹配可以用“+”表示。
  • “\.” :在这里的“\”是转义符,“\.”就代表符号“.”的意思。因为“.”在指令中是属于规则字符,有相应的含义, 如果需要匹配,需要在前面加个转义符“\”,其它规则字符如果需要匹配,也做同样处理。
  • “(gif|jpg|swf)” :表示匹配“gif”、“jpg”、“swf”任意一个,“$”表示结束。最后的规则是以“.gif”、“.jpg”、“.swf”结尾, 前面是1到多个字符的字符串,也就是匹配图片类型的文件。
  • “http://www.test.com/error.png” :表示转发到这个路径 。

(2)准备一张提示盗链者的图片,放入网页根目录中

(3) 访问展示

 访问被盗链主机网页:

 访问盗链主机网页:

总结

到此这篇关于Apache网页的优化、安全与防盗链的文章就介绍到这了,更多相关Apache网页优化 安全与防盗链内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Apache 防盗链的技术小结

    一. 遭遇图片盗链 个人网站使用的是国外付费空间,有流量限制.今天是 2007.03.29,收到主机商的通知邮件,提醒我本月的流量即将超出配额.--超出流量,就要向万恶的美帝资本家交银子,吓我一跳,平常网站的流量根本使用不完,马上查看 awstats 的日志分析,没有发现什么异常.于是把 access log 日志拉下来,用逆火网站日志分析器检查了一下站点盗链情况,发现本站的 深圳高交会之神州龙芯 CPU 映象记[图文] 以及 香港2005年春季行(3) - 庙街风光等原创文章中的图片,被许多网

  • apache urlrewrite防盗链功能配置

    DocumentRoot /home/img ServerName img.host.com ErrorDocument 404 / RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://img.host.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.host.com/.*$ [NC] RewriteRule \.(g

  • Apache 并发优化设置方法

    Apache优化步骤: 1.先查看apache的运行模式,查看命令: httpd -l Compiled in modules:            core.c            prefork.c            http_core.c            mod_so.c         这里可以看到运行模式是prefork模式. 2.修改apache 的httpd.conf 配置 本文是对512M 内存并装有apache的vps进行优化,请不要跟我说装nginx就强多了,确

  • Apache下MP3 防盗链的解决办法

    今天说的这个办法是通过Apache的Mod_Rewrite功能来实现的,代码写在.htaccess文件里面,示例如下: 复制代码 代码如下: RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www\.)?jb51\.net/.*$ [NC] RewriteRule \.(mp3|rar)$ http://www.jb51.net/ [R=301,L] 想使用这段代码的朋友,请把里面的网址改成你自己的网址即可.

  • apache rewrite防盗链三例

    1.利用rewrite 确认你的apache 能使用rewrite mod RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://linuxsky.net/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://linuxsky.net$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.linuxsky.net/.*$ [NC] RewriteCond %{HTT

  • Apache中利用mod_rewrite实现防盗链

    前提Apache中的mod_rewrite模块为激活状态,既然要消灭掉mp3文件的盗链就顺便也把图片盗链的设置给做了,下面是我在网站根目录的.htaccess文件中的配置,供同病相怜之人参考:.  view plaincopy to clipboardprint?<ifmodule mod_rewrite.c>  #开启mod_rewrite引擎   RewriteEngine On  #设置合法请求源    <ifmodule mod_rewrite.c>   #开启mod_re

  • 优化Apache服务器性能的方法小结

    测试与提高性能 Apache服务器已经被设计得尽可能的快,即使你用一台配置不高的机器,用不着进行太复杂的设置,它的响应内容就足以塞满以前的各种窄带连接.但随网站内容日益复杂和带宽的增加,对Apache进行优化以取得更好的性能变得日益重要起来. 如果优化的结果仅仅是极小的性能提升那真是浪费时间.试想一下,你花了好几个小时甚至几天调整Apache的各种参数但结果仅是几个百分点的性能提升?因此,在优化前你做的第一步应该是测试你目前的服务器的性能水平以便决定如何优化你的服务器并衡量优化的效果. 关于对A

  • Nginx和Apache几种防盗链配置方法实例

    要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫 referer,采用URL的格式来表示从哪儿链接到当前的网页或文件.换句话说,通过referer,网站可以检测目标网页访问的来源网页,如果是资源 文件,则可以跟踪到显示它的网页地址.有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返 回指定的页面. Nginx防盗链的配置 1.nginx针对文件类型的防盗链配置

  • Apache网页的优化、安全与防盗链图文详解

    目录 1. Apache 网页的压缩 1.1 检查压缩模块 1.2   安装mod_deflate 模块 1.3 配置 mod_deflate 模块启用 1.4 检查安装情况,启动服务 1.5 测试 mod_deflate 压缩是否生效 2. Apache的网页缓存处理 2.1 检查是否安装缓存模块 2.2 重新编译安装,添加缓存模块 2.3 进行缓存模块的配置 2.4 验证模块的安装,重启服务 2.5 修改测试网页,进行访问测试 3.隐藏Apache的版本信息 3.1 修改httpd的主配置

  • Nginx的优化、安全与防盗链实例详解

    目录 1.Nginx的页面优化 1.1 Nginx的网页压缩 1.2  配置Nginx的图片缓存 1.3  Nginx的连接超时设置 1.4 Nginx的并发设置 2.Nginx的页面安全 2.1 查看Nginx版本的方式 方式一:curl模拟访问获取 方式二:浏览器访问查看 2.2 隐藏版本号 3.Nginx的日志分割 4.Nginx防盗链 4.1 盗链的过程 4.2 Nginx防盗链的设置 5.fpm参数优化 总结 1.Nginx的页面优化 1.1 Nginx的网页压缩  在Nginx的ng

  • javascript 作用于作用域链的详解

    javascript 作用于作用域链的详解 一.JavaScript作用域 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期.在JavaScript中,变量的作用域有全局作用域和局部作用域两种. 全局作用域(Global Scope) 在代码中任何地方都能访问到的对象拥有全局作用域,一般来说一下几种情形拥有全局作用域: (1)最外层函数和在最外层函数外面定义的变量拥有全局作用域, 例如: var authorName="Bu

  • JavaScript原型及原型链终极详解

    JavaScript原型及原型链终极详解 一. 普通对象与函数对象 JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object,Function 是JS自带的函数对象.下面举例说明 function f1(){}; var f2 = function(){}; var f3 = new Function('str','console.log(str)'); var o3 = new f1(); var o1 = {}; var o2 =new Object()

  • 优化MyBatis配置文件中的配置详解

    本文研究的主要是优化MyBatis配置文件中的配置的相关内容,具体介绍如下. 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN&

  • 200行代码实现blockchain 区块链实例详解

    了解blockchain的概念很简单(区块链,交易链块):它是分布式的(即不是放置在同一台机器上,不同的网络设备上的)数据库支持主办记录日益增长的名单.但是,这也是容易混淆blockchain与我们试图帮他解决了目标 - 在人们心中的那一刻,这个词是相当强烈的交易,合同或智能cryptocurrency的概念有关. 只有在这里blockchain - 是不是一回事比特币,并理解链块的基本知识比它似乎更容易,尤其是在,它是基于源代码的情况下.在本文中,我们提出了建立与在JavaScript中200

  • Mysql优化order by语句的方法详解

    本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的老少爷们可以先看一下我之前写过的索引相关文章.现在让我们开始吧. MySQL中的两种排序方式 1.通过有序索引顺序扫描直接返回有序数据 因为索引的结构是B+树,索引中的数据是按照一定顺序进行排列的,所以在排序查询中如果能利用索引,就能避免额外的排序操作.EXPLAIN分析查询时,Extra显示为Using index. 2.Filesort排序,对返回的数据进行排序 所有不是通过索引直接返回排序结果的操作都

  • JavaScript原型继承和原型链原理详解

    这篇文章主要介绍了JavaScript原型继承和原型链原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在讨论原型继承之前,先回顾一下关于创建自定义类型的方式,这里推荐将构造函数和原型模式组合使用,通过构造函数来定义实例自己的属性,再通过原型来定义公共的方法和属性. 这样一来,每个实例都有自己的实例属性副本,又能共享同一个方法,这样的好处就是可以极大的节省内存空间.同时还可以向构造函数传递参数,十分的方便. 这里还要再讲一下两种特色的构造

  • JavaScript对象原型链原理详解

    这篇文章主要介绍了JavaScript对象原型链原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一个js对象,除了自己设置的属性外,还会自动生成proto.class.extensible属性,其中,proto属性指向对象的原型. 对象的属性也有writable.enumerable.configurable.value和get/set的配置方法. 对象的创建方式有三种: 一.使用字面量直接创建. 二.基于原型链创建. 分析上图,要点如

  • IDEA的常见的设置和优化功能图文详解

    显示工具条 (1)效果图 (2)设置方法 标注1:View–>Toolbar标注2:View–>Tool Buttons设置鼠标悬浮提示 (1)效果图 (2)设置方法 File–>settings–>Editor–>General–>勾选Show quick documentation- 显示方法分隔符 (1)效果图 (2)设置方法 File–>settings–>Editor–>Appearance–>勾选 忽略大小写提示 (1)效果图 备注:

随机推荐