当前位置: 首页 > news >正文

3种Nginx防盗链的方法

一:一般的防盗链如下:

location ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.deepvps.com deepvps.com ;
if ($invalid_referer) {
rewrite ^/ http://www.deepvps.com/retrun.html;
#return 403;
}
}

第一行:gif|jpg|png|swf|flv
表示对gif、jpg、png、swf、flv后缀的文件实行防盗链
第二行: 表示对www.ingnix.com这2个来路进行判断
if{}里面内容的意思是,如果来路不是指定来路就跳转到http://www.deepvps.com/retrun.html页面,当然直接返回403也是可以的。

二:针对图片目录防止盗链

location /images/ {
alias /data/images/;
valid_referers none blocked server_names *.xok.la xok.la ;
if ($invalid_referer) {return 403;}
}

三:使用第三方模块ngx_http_accesskey_module实现Nginx防盗链
实现方法如下:

实现方法如下:
1. 下载NginxHttpAccessKeyModule模块文件:Nginx-accesskey-2.0.3.tar.gz;
2. 解压此文件后,找到nginx-accesskey-2.0.3下的config文件。编辑此文件:替换其中的”$HTTP_ACCESSKEY_MODULE”为”ngx_http_accesskey_module”;
3. 用一下参数重新编译nginx:
./configure --add-module=path/to/nginx-accesskey
4. 修改nginx的conf文件,添加以下几行:
location /download {
  accesskey             on;
  accesskey_hashmethod  md5;
  accesskey_arg         "key";
  accesskey_signature   "mypass$remote_addr";
}

其中:
accesskey为模块开关;
accesskey_hashmethod为加密方式MD5或者SHA-1;
accesskey_arg为url中的关键字参数;
accesskey_signature为加密值,此处为mypass和访问IP构成的字符串。

访问测试脚本download.php:
<?
$ipkey= md5("mypass".$_SERVER['REMOTE_ADDR']);
$output_add_key="<a href=http://www.deepvps.com/download/G3200507120520LM.rar?key=".$ipkey.">download_add_key</a><br />";
$output_org_url="<a href=http://www.deepvps.com/download/G3200507120520LM.rar>download_org_path</a><br />";
echo $output_add_key;
echo $output_org_url;
?>

访问第一个download_add_key链接可以正常下载,第二个链接download_org_path会返回403 Forbidden错误。

参考:
NginxHttpAccessKeyModule

相关文章:

  • Nginx反向代理到apache
  • Nginx负载均衡如何进行配置
  • 网站上线之前需要检查的13个问题
  • php实现文件上传进度条
  • PHP程序员突破成长瓶颈
  • LINUX常用命令(基础)
  • 面向对象的理解
  • 网站开发的技术和思想的思考
  • chkrootkit安装配置教程 – Linux后门入侵检测
  • 如何在win系统下安装树莓派的系统到SD卡(菜鸟教程一)
  • 树莓派自动连接无线
  • 树莓派(Raspberry Pi)USB无线网卡自动连接
  • thinksns开源微博系统 V3上传漏洞
  • dedecms好友描述修改和会员中心收藏删除均存在sql注入漏洞
  • 易想(easethink)团购系统ajax文件导致SQL注入漏洞
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 2017 年终总结 —— 在路上
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • JavaScript新鲜事·第5期
  • js操作时间(持续更新)
  • LeetCode18.四数之和 JavaScript
  • npx命令介绍
  • QQ浏览器x5内核的兼容性问题
  • Vue小说阅读器(仿追书神器)
  • 测试如何在敏捷团队中工作?
  • 第十八天-企业应用架构模式-基本模式
  • 计算机在识别图像时“看到”了什么?
  • 经典排序算法及其 Java 实现
  • 人脸识别最新开发经验demo
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 在Docker Swarm上部署Apache Storm:第1部分
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #pragma once
  • #Ubuntu(修改root信息)
  • $(selector).each()和$.each()的区别
  • (1)SpringCloud 整合Python
  • (ZT)一个美国文科博士的YardLife
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (转载)Linux 多线程条件变量同步
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • . Flume面试题
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET企业级应用架构设计系列之开场白
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @hook扩展分析
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [1204 寻找子串位置] 解题报告
  • [22]. 括号生成
  • [BeginCTF]真龙之力