Nginx防盗链的3种方法

 更新时间:2010年12月20日 11:19:21   作者:  
Nginx防盗链的3种方法,需要的朋友可以参考下。
一:一般的防盗链如下:
复制代码 代码如下:

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

第一行:gif|jpg|png|swf|flv
表示对gif、jpg、png、swf、flv后缀的文件实行防盗链
第二行: 表示对www.ingnix.com这2个来路进行判断
if{}里面内容的意思是,如果来路不是指定来路就跳转到https://www.jb51.net/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=https://www.jb51.net/download/G3200507120520LM.rar?key=".$ipkey.">download_add_key</a><br />";
$output_org_url="<a href=https://www.jb51.net/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 rewrite正则匹配重写的方法示例

    Nginx rewrite正则匹配重写的方法示例

    这篇文章主要介绍了Nginx rewrite正则匹配重写的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Nginx限流配置详解

    Nginx限流配置详解

    限流是服务降级的一种方式,通过限制系统的输入和输出流量以达到保护系统的目的,本文主要介绍了Nginx限流配置详解,感兴趣的可以了解一下
    2023-11-11
  • 利用Nginx_geo模块实现CDN调度的配置方法

    利用Nginx_geo模块实现CDN调度的配置方法

    今天小编就为大家分享一篇利用Nginx_geo模块实现CDN调度的配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Nginx中报错:Permission denied与Connection refused的解决

    Nginx中报错:Permission denied与Connection refused的解决

    这篇文章主要给大家介绍了在Nginx中报错:13: Permission denied与111: Connection refused的解决方法,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • nginx中path模式配置示例

    nginx中path模式配置示例

    这篇文章主要介绍了nginx中path模式配置示例,nginx服务器默认是不支持pathinfo模式的,需要修改配置才可以实现,本文即给出了配置示例,需要的朋友可以参考下
    2014-12-12
  • Windows下Nginx+PHP5的安装与配置方法

    Windows下Nginx+PHP5的安装与配置方法

    Nginx 是一个轻量级的高性能 Http WebServer,以事件驱动方式编写,因此相比 Apache 而言,Nginx 更加稳定、性能更好,而且配置简单,资源占用较低。
    2010-06-06
  • 详解Nginx SSL快速双向认证配置(脚本)

    详解Nginx SSL快速双向认证配置(脚本)

    这篇文章主要介绍了详解Nginx SSL快速双向认证配置(脚本),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 为什么我推荐Nginx作为后端服务器代理(原因解析)

    为什么我推荐Nginx作为后端服务器代理(原因解析)

    这篇文章主要介绍了为什么我推荐Nginx作为后端服务器代理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Ubuntu环境下安装部署Nginx详细步骤(有网)

    Ubuntu环境下安装部署Nginx详细步骤(有网)

    Nginx是一个开源的 HTTP 网络服务器,下面这篇文章主要给大家介绍了关于Ubuntu环境下安装部署Nginx(有网)的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • 启用Nginx目录浏览功能的方法

    启用Nginx目录浏览功能的方法

    这篇文章主要介绍了启用Nginx目录浏览功能的方法,需要的朋友可以参考下
    2014-03-03

最新评论