LAMP静态元素过期时间配置防盗链访问控制Directory访问控制FilesMatch
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LAMP静态元素过期时间配置防盗链访问控制Directory访问控制FilesMatch相关的知识,希望对你有一定的参考价值。
静态元素过期时间
静态元素:(图片、js、css)
平时我们在浏览器访问网站的时候,如果里面有这些静态元素,浏览器会帮我们把它们缓存下来,再次访问的时候访问的速度就会快。
缓存下来的静态元素到底缓存多久?这个是可以在服务器配置文件中定义的。(定义静态元素过期时间)
304 状态码表示该文件已经缓存到用户电脑。
定义静态元素的失效日期:
步骤:(针对111.com这台虚拟主机操作)
1.编辑配置文件,添加配置内容;
增加配置
<IfModule mod_expires.c> //expires模块m
ExpiresActive on //打开该功能的开关
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hour"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
改完了配置文件需要重新加载一下:
/usr/local/apache2.4/bin/apachectl -t (检测)
/usr/local/apache2.4/bin/apachectl graceful (加载)
2.检查一下expaire模块是否有打开:
/usr/local/apache2.4/bin/apachectl -M |grep expires
(若无则在httpd配置文件中打开)
vim /usr/local/apache2.4/conf/httpd.conf (搜索expires )
修改后
测试:curl -x192.168.136.133:80 111.com/qq.jpg -I
如果我们把expaire模块关了-->测试
配置防盗链
referer的概念:如我们在A网站的一个页面http://a.com.a.html的链接去访问到B网站的一个页面http://b.com/b.html,那么B网站的页面的referer就是http://a.com.a.html。referer其实就是一个网址。
定义防盗链步骤:(对111.com虚拟主机操作)
1.编辑虚拟主机配置文件,增添内容:
配置文件增加如下内容
<Directory /data/wwwroot/111.com> //定义目录
SetEnvIfNoCase Referer "http://111.com" local_ref //定义白名单
SetEnvIfNoCase Referer "http://www.example.com" local_ref //定义白名单
SetEnvIfNoCase Referer "^$" local_ref //定义白名单,^$为空的referer,当我们直接在浏览器中输入访问内容(图片)的地址时,referer为空。
<FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)"> //针对这些访问设置防盗链。
Order Allow,Deny
Allow from env=local_ref //这两行的意思是把我们上面定义的referer做允许,其他deny
</FilesMatch>
</Directory>
改完了配置文件需要重新加载一下:
/usr/local/apache2.4/bin/apachectl -t (检测)
/usr/local/apache2.4/bin/apachectl graceful (加载)
测试:
1.浏览器:
(SetEnvIfNoCase Referer "^$" local_ref //定义白名单,^$为空的referer,当我们直接在浏览器中输入访问内容(图片)的地址时,referer为空。)在浏览器测试时是这条内容注释了测试的。
使用curl -e 指定refererc测试
curl -e "http://www.baidu.com/123.txt" -x192.168.136.133:80 111.com/qq.jpg -I
使用有白名单的referer
访问控制Directory
限制ip访问,只有白名单(允许名单ip)才能就行访问
步骤:
修改虚拟主机配置:
核心配置文件内容
<Directory /data/wwwroot/111.com/login/>
Order deny,allow //order定义下面先执行deny还是allow
Deny from all
Allow from 192.168.136.133
</Directory>
(这里限制的是源ip)
改完了配置文件需要重新加载一下:
/usr/local/apache2.4/bin/apachectl -t (检测)
/usr/local/apache2.4/bin/apachectl graceful (加载)
(此时我们已经创建了login目录和目录里的index.php文件)
测试:
(curl -x+ip,这里的ip就是我们的目标ip)
(只要我们的源ip不是我们定义有允许的ip就不能访问)
最左边的就是来源ip
访问控制FilesMatch
针对一个链接文件做访问限制,而上面是对一个目录做了访问限制。
修改配置文件,添加内容:
改完了配置文件需要重新加载一下:
/usr/local/apache2.4/bin/apachectl -t (检测)
/usr/local/apache2.4/bin/apachectl graceful (加载)
测试:
以上是关于LAMP静态元素过期时间配置防盗链访问控制Directory访问控制FilesMatch的主要内容,如果未能解决你的问题,请参考以下文章
LNMP 静态文件不记录日志和过期时间Nginx防盗链Nginx访问控制解析php
LAMP架构(配置防盗链,目录访问控制,文件/链接访问控制)