Apache网页优化之防盗链
■防盗链就是防止别人的网站代码里面盗用服务器的图片
、文件、视频等相关资源
■如果别人盗用网站的这些静态资源,明显的是会增大服
务器的带宽压力
■所以作为网站的维护人员,要杜绝我们服务器的静态资
源被其他网站盗用
■检查Apache是否安装了mod_ rewrite模块
●/usr/local/apache/bin/apachectl -t -D DUMP MODULES
●如果输出中没有rewrite module (static),则说明编译时没有安装
mod rewrite模块
■如果没有安装则要重新编译安装
●./configure --enable-rewrite...
●make &&make install
配置规则变量说明
%{HTTP REFERER}:浏览header中的链接字段,存放一一个链
接的URL,代表是从哪个链接访问所需的网页
!^:不以后面的字符串开头
.*$: 以任意字符结尾
NC:不区分大写
R:强制跳转
■规则匹配说明
●RewriteEngine On:打开网页重写功能
●RewriteCond:设置匹配规则
●RewriteRule:设置跳转动作
规则匹配
●如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不
匹配,则往后的规则不再匹配
■配置操作演示
●修改配置文件启用防盗链功能并设置规则:
RewriteEngine On
RewriteCond %{HTTP_ REFERER} !tp://est.com/.$ [NC]
RewriteCond %{HTTP REFERER} !^http://test.com$ [NC1
RewriteCond %{HTTP REFERER} !^http://www.test.com/.$ [NC]
RewriteCond %{HTTP_ REFERER} !^http://www.test.com$ [NC]
RewriteRule .\.(gifljpg|swf)$ http://www.test.com/error.html [R,NC]
防盗链配置实操
安装并配置DNS服务
[ ~]# yum install bind -y //安装服务 [ ~]# vim /etc/named.conf //编辑主配置文件 options { listen-on port 53 { any; }; //括号内127.0.0.1替换为any listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; //括号内localhost替换为any
[ ~]# vim /etc/named.rfc1912.zones //编辑区域配置文件 zone "kgc.com" IN { //指定域名 type master; file "kgc.com.zone"; //指定域名对应的区域数据配置文件 allow-update { none; }; };
[ ~]# cd /var/named/ [ named]# ls data dynamic named.ca named.empty named.localhost named.loopback slaves [ named]# cp -p named.localhost kgc.com.zone //复制区域数据配置文件模板 [ named]# vim kgc.com.zone //编辑区域数据配置文件 $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 www IN A 192.168.131.129
[ named]# systemctl start named //开启DNS服务 [ named]# systemctl stop firewalld.service //关闭防火墙 [ named]# setenforce 0 //关闭增强型安全功能
编译安装Apache服务
[ named]# mkdir /aaa [ named]# mount.cifs //192.168.100.10/LAMP-C7 /abc //远程挂载文件到本地 Password for //192.168.100.10/LAMP-C7: [ named]# cd /abc [ LAMP]# ls //查看挂载文件内容 apr-1.6.2.tar.gz cronolog-1.6.2-14.el7.x86_64.rpm mysql-5.6.26.tar.gz apr-util-1.6.0.tar.gz Discuz_X2.5_SC_UTF8.zip php-5.6.11.tar.bz2 awstats-7.6.tar.gz httpd-2.4.29.tar.bz2
解压工具包的源码文件并移动组件包到Apache的目录中
[ LAMP]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt/ [ LAMP]# tar zxvf apr-1.6.2.tar.gz -C /opt/ [ LAMP]# tar zxvf apr-util-1.6.0.tar.gz -C /opt/ [ LAMP]# cd /opt/ [ opt]# ls apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh [ opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr [ opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
安装编译语言环境
yum -y install gcc gcc-c++ make pcre-devel zlib-devel expat-devel pcre perl
configure配置Apache功能模块
[ opt]#cd httpd-2.4.29/ [ httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-deflate --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
编译及编译安装
make && make install
httpd-2.4.29]# vim /usr/local/httpd/conf/httpd.conf /ServerName搜索关键词到此行,并进行如下配置 ServerName www.kgc.com:80 /Listen搜索关键词到监听端口 Listen 192.168.131.129:80 //开启ipv4端口并将监听地址改为本地地址 #Listen 80 //对ipv6端口进行注释 LoadModule rewrite_module modules/mod_rewrite.so /rewrite搜索关键词到此行,开启重写功能模块
[ httpd-2.4.29]# cd /usr/local/httpd/bin/ //切换至Apache服务的/bin目录中 [ bin]# vim /usr/local/httpd/htdocs/index.html //编辑首页文件 <html><body><h1>It works!</h1> <img src="tupian.png"/> //将图片放入标签中 </body></html> [ bin]# cp /abc/tupian.png /usr/local/httpd/htdocs/ //将先前挂载目录中的图片复制到站点目录下 ./apachectl start //开启Apache服务
打开一台win10测试机,将DNS服务器地址改为本地服务器地址
在浏览器输入www.kgc.com 即可访问到网页
右击图片查看网页属性,以获取图片的URL地址
创建并配置盗链网站
开启另一台win10-2测试机搭建盗链网站
使用txt文档编写网页内容
<html>
<head></head>
<body>
<h1>this is test web</h1>
<img src="http://www.kgc.com/tupian.png"/>
</body>
</html>
将文件改为html格式并放入放入C:\inetpub\wwwroot的站点中
此时使用测试机win10访问192.168.131.128,就可以访问到网页,但是这是个盗链网站,访问此站点的同时既盗取了他人源网站的资源,又将流量导回了源网站,从而造成了他人服务器的负载,所以为了防止这种情况的发生,所以我们要对我们的apache网页进行防盗链的配置,
配置防盗链
修改apache配置文件
[ bin]# vim /usr/local/httpd/conf/httpd.conf
Require all granted
//在此行下插入以下规则
RewriteEngine On
RewriteCond %{HTTP_REFERER} !http://kgc.com/.$ [NC]
RewriteCond %{HTTP_REFERER} !^http://kgc.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/$ [NC]
RewriteRule .*.(gif|png|swf)$ http://www.kgc.com/fangdao.jpg
将报错图片放入站点目录
[ bin]# cp /abc/fangdao.jpg /usr/local/httpd/htdocs/
[ bin]# ls /usr/local/httpd/htdocs/
tupian.png fangdao.jpg index.html
[ bin]# ./apachectl stop //重启服务
[ bin]# ./apachectl start
我们使用测试机再次输入192.168.131.128,此时因为设置了防盗链所以会跳出另外一张图片,此时说明了防盗链设置成功