防盗链,就是不让别人盗用你网站上的资源,这个资源,通常指的是图片,视频,歌曲,文档等。不是我们认识的referer一概不许访问。 防盗链的作用是,我们网站的图片,只能通过我们自己的网站去访问,其他网站借用不行。 我举的例子,意思是我们的网站,被用户上传了很多图片,而用户又在他自己的网站上加上了我们网站图片的链接,就直接能访问了。 这样可以节省他网站的带宽。
通过限制referer来实现防盗链的功能 配置文件增加如下内容
<Directory /data/wwwroot/111.com>
SetEnvIfNoCase Referer "http://111.com" local_ref //设置referer的白名单
SetEnvIfNoCase Referer "http://aaa.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref //空referer,可以直接访问网站的图片,
//如果没有这行,想要访问网站图片就需要通过上面的白名单referer去访问
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny //order用来定义顺序,是先allow还是先deny,如果先allow就先执行allow的语句,先deny就先执行deny的语句
Allow from env=local_ref
</filesmatch>
</Directory>
-e用来指定referer: curl -e “http://111.com/123.txt” 当我们用www.qq.com这个referer去访问111.com时候就会出现403则被限制访问了。 但是用http://111.com这个白名单referer去访问就可以正常访问 //referer要用http://
访问控制Directory,只允许设置的IP可以访问网站。 核心配置文件内容,编辑虚拟主机配置文件: /usr/local/apache2.4/conf/extra/httpd-vhosts.conf :
<Directory /data/wwwroot/111.com/admin/>
Order deny,allow //order用来定义顺序,是先allow还是先deny,如果先allow就先执行allow的语句,先deny就先执行deny的语句
Deny from all
Allow from 127.0.0.1 //只允许127.0.0.1这个IP可以访问
</Directory>
记得在111.com目录下创建admin目录,在admin目录下编辑文件index.php,内容随便写。
curl测试状态码为403则被限制访问了,只有allow里的127.0.0.1可以访问。
访问控制FilesMatch,只允许设置的IP可以访问网站里设置的admin.php(.*)的文件,其他没有allow的IP只能访问网站除了admin.php(.*)以外的文件。 核心配置文件内容
<Directory /data/wwwroot/111.com>
<FilesMatch "admin.php(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
curl测试状态码为403则被限制访问了 而127.0.0.1测试状态码为404说明可以访问,只是访问的东西不存在而已。
扩展 几种限制ip的方法 http://ask.apelearn.com/question/6519 apache 自定义header http://ask.apelearn.com/question/830 apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556