十三、Apache配置防盗链

### 一、Apache防盗链简介

此功能是为了防止其他网站盗用我们网站里的一些文件,如图片链接。这样会造成用户访问他们的网站实际上图片请求是我们的服务器处理的,造成我们服务器的带宽、资源的浪费。

一般小网站会使用盗链,这样可以减少自己服务器的负载。

1.1 配置方法一

1、编辑主配置文件

vim /usr/local/apache2/conf/httpd.conf
153 LoadModule rewrite_module modules/mod_rewrite.so #去掉该行注释启用模块
478 Include conf/extra/httpd-vhosts.conf #去掉该行注释启用虚拟主机配置文件

2、编辑虚拟主机配置文件

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
        DocumentRoot "/www/tz"
        ServerName www.tzlinux.com
        RewriteEngine On 
        RewriteCond %{HTTP_REFERER} !^$ 
        RewriteCond %{HTTP_REFERER} !tz\.com/\.*$ [NC]    
        RewriteCond %{HTTP_REFERER} !www\.tz\.com/.*$ [NC]    
        RewriteRule.*\.(gif|jpg|swf)$http://www.tz.com/about/picpath.png [R,NC,L]
</VirtualHost>

配置说明:

RewriteEngine On  #启用rewrite模块
RewriteCond %{HTTP_REFERER} !^$  #%{HTTP_REFERER} 服务器变量,告诉服务器我是从哪个页面链接过来的。
#!^$允许为空的HTTP_REFERER访问,即允许用户在浏览器地址栏中直接输入图片地址访问,不是从其他页面链接点击访问过来的。
RewriteCond %{HTTP_REFERER} !tz\.com/\.*$ [NC]   #设置允许访问的HTTP来源,即网站自身  
RewriteCond %{HTTP_REFERER} !www\.tz\.com/.*$ [NC]  #设置允许访问的HTTP来源,即网站自身  
RewriteRule.*\.(gif|jpg|swf)$http://www.tz.com/about/403.jpg [R,NC,L] 
#定义被盗链时替代的图片,即所有引用本网站的gif、jpg、swf文件都会显示为403.jpg图片
#如果不设置图片,可使用RewriteRule.*\.(gif|jpg|png)$ - [F],该语句会显示403禁止访问。

[NC] #指的是不区分大小写
[R] #强制重定向
[L] #表示如果匹配的是本条规则,那么就忽略之后的所有规则。

3、配置效果
我的虚拟主机配置文件如下

访问效果如下

可以看到这里的HTTP_REFERER换为其他网站域名即显示403错误。

1.2 配置方法二

这个方法可以通过阻止爬虫抓取你的网站来节省你的带宽流量。

在虚拟主机配置文件中添加

<VirtualHost *:80>
	DocumentRoot "/www/tz"
	ServerName www.tz.com
	SetEnvIfNoCase Referer "^$" local_ref #允许直接使用浏览器访问
	SetEnvIfNoCase Referer "www.tz.com/.*$" local_ref #允许从www.tz.com/过来的访问请求
	SetEnvIfNoCase Referer "tz.com/.*$" local_ref
	<filesmatch "\.(mp3|mp4|zip|rar|jpg|gif)"> 
		Require all denied #拒绝所有链接请求
		Require env local_ref #只允许命名为local_ref的链接请求
	</filesmatch>
</VirtualHost>

1.3 配置方法三

《Linux系统运维指南》书中的配置方法,未测试

image-20220405002010868

二、参考资料

posted @ 2021-05-12 02:03  努力吧阿团  阅读(193)  评论(0)    收藏  举报