1. location ~* .*.mp4$ {
2. expires 30d;
3. # root /www/wwwroot/default/learnlaravel5/public/uploads/;
4. valid_referers none blocked 192.126.118.132 *.192.126.118.132 *.baidu.com *.google.com *.sogo.com;
5. if ($invalid_referer){
6. return 403;
7. # #rewrite ^/ http://www.baidu.com;
8. }
9. mp4;
10. }
#设置图片防盗链
location ~* .*.(gif|png|jpeg|gif|jpg|bmp|swf)$ {
# location /uploads/ {
expires 30d;
# root /www/wwwroot/default/learnlaravel5/public/uploads/video/;
valid_referers *.192.126.118.132 192.126.118.132 *.baidu.com *.google.com *.sogo.com;
if ($invalid_referer){
return 403;
#rewrite ^/ http://www.baidu.com;
}
}
这里是图片和视频的防盗链,我就解释一下视频的配置意思吧,这里我方便叙述,所以打了行号,要粘贴复制的话,请去掉前边的行号,但是,也请搞清楚各行的意思,免得出错了找我啊,嘿嘿
第一行 location ~* .*.mp4$ { 这是一个正则匹配,取出处理静态文件的请求的后缀,这里说一下,客户端访问服务器,浏览器请求的顺序,
域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户 --> 四次挥手结束
这里我也不做多的解释,有兴趣可以去看看,搜搜
第二行 expires 30d; 对于站点中不经常修改的静态内容(如图片,JS,CSS),可以在服务器中设置expires过期时间,控制浏览器缓存,达到有效减小带宽流量,降低服务器压力的目的。 说一下单位,d是天,30d就是30天,1h就是一小时
第三行 root /www/wwwroot/default/learnlaravel5/public/uploads/; 这是规定匹配目录,即是说当访问这个文件夹的MP4文件时,运行下面的规则,如果你前面有规定root的目录,这里可以不用谢,即是说,文件的目录,在你的网站目录里,就可以不用写,跟root不是在一个目录的话,就要写了。
第四行 valid_referers none blocked 192.126.118.132 *.192.126.118.132 *.baidu.com *.google.com *.sogo.com; 这行的意思规定哪些网站可以正常访问,前面的*号,也是正则匹配的啦,www,或者http或者https或者其他的,这里要把自己的网站写上啊,其他的百度谷歌什么的,随你啦none 不拒绝来源头部为空的请求 blocked 来源头部不为空,但是里面的值被代理或者防火墙删除了,这些值都不以http://或者https://开头.
第五行 if ($invalid_referer){ 这个就是一个if判断,$invalid_referer 的意思就是,当访问的路径不是来自于上面你规定的那些,那么这个变量的值就会等于1,从而执行里面的return 403,
第六行 return 403; 即是返回一个错误码,403,也可以直接重定向到第七行 那里写的一样的一个网址 ,可以是你自己的,或者是一张403的图片都可以的,看你啦,
另外想说的就是,浏览器有缓存,测试视频的时候,即是自己的网站访问的时候,可以加载,别的页面直接引入视频的也可以播放,那么也有可能是浏览器缓存的问题,清空一下就好了,还是就是图片的话,我这边用的nginx的服务器,tail -200f access.log 就可以看到图片或者视频是否访问成功,access.log是nginx的日志啦,任何经过nginx的访问,都有记录。图片意思也是这样的,我这里只有mp4的视频,所以只配置mp4,其他的需要的话,加上就好了,还有就是正则匹配的问题,有好几个精度,我这里用这个就好了,要说正则的话,又是一大堆。