*******************************************************************
切记,替换的图片地址要使用没有防盗链的网站图片,否则由于替换的图片其实也处于防盗链情况下,会造成仍旧无法显示设置的图片。
*******************************************************************

一、全站图片防盗链

在/usr/local/nginx/conf/nginx.conf文件要添加防盗链的server段里添加下面的代码:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
valid_referers none blocked *.ipple.net *.abc.com;
if ($invalid_referer)
{
rewrite ^/ http://www.otherdomin.com/403.jpg;
#return 403;
}
}

测试一下配置是否OK
# /usr/local/nginx/sbin/nginx -t
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful

然后执行如下命令重启lnmp即可:注:这里用的是lnmp的自动安装包里的shell,你如果是原生安装的请用原来的办法重启就可以了。

# /root/lnmp restart

说明:
1、请将代码中的*.ipple.net *.abc.com等换成你自己的域名。
2、请确保server段中只有一个location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$,否则可能导致代码无效。

如果有下面这段代码,请将其删除或者与上面的代码合并成一段:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
再次重启lnmp,你会发现,防盗链设置已经生效了。

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

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

三:使用第三方模块HttpAccessKeyModule实现Nginx防盗链

实现方法如下:
1. 下载NginxHttpAccessKeyModule模块文件:Nginx-accesskey-2.0.3.tar.gz;http://wiki.nginx.org/File: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.domain.com/download/G3200507120520LM.rar?key=”.$ipkey.”>download_add_key</a><br />”;
$output_org_url=”<a href=http://www.domain.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 http://wiki.nginx.org/NginxHttpAccessKeyModule#accesskey

防盗链Nginx设置图片防盗链,设置无效的请仔细看红字的更多相关文章

  1. nginx服务器图片防盗链的方法

    nginx服务器图片防盗链的方法<pre> location ~* \.(gif|jpg|png|jpeg)$ { expires 30d; valid_referers *.shuche ...

  2. Nginx实现图片防盗链(referer指令)

    什么是图片盗链   每张图片在浏览器中都有对应的图片地址,在浏览器中输入这个地址是可以直接拿到图片. 图片盗链,就是盗用者在他的站上需要显示我们的图片,他没有把图片拿下来,放到他的服务器上, 而是直接 ...

  3. nginx配置图片防盗链

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${ expires 30d; access_log off; valid_referers none blocked ...

  4. python设置图片背景和设置字体颜色大小

    # -*- coding: utf-8 -*- """ Created on Wed Dec 11 22:37:30 2019 @author: Dell "& ...

  5. 织梦/dedecms 当文章转载时不需要设置图片水印的设置,取消’图片是否加水印‘的复选框,并且修改如下文件即可生效

    当想添加水印是选中“图片是否加水印”复选框即可. 找到include/helpers/image.helper.php这个文件,在里面找到中的if( isset($GLOBALS['needwater ...

  6. Nginx中防盗链(下载防盗链和图片防盗链)操作记录

    日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...

  7. Nginx中防盗链(下载防盗链和图片防盗链)及图片访问地址操作记录

    日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...

  8. Request的属性和防止图片被盗链

    Request.AppRelativeCurrentExecutionFilePath,获取当前执行请求相对于应用根目录的虚拟路径,以~开头,比如"~/default.ashx" ...

  9. nginx系统真正有效的图片防盗链完整设置详解

    原文:http://www.wufangbo.com/nginx-fang-dao-lian/ 关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的 ...

随机推荐

  1. Codeforces 1073G Yet Another LCP Problem $SA$+单调栈

    题意 给出一个字符串\(s\)和\(q\)个询问. 每次询问给出两个长度分别为\(k,l\)的序列\(a\)和序列\(b\). 求\(\sum_{i=1}^{k}\sum_{j=1}^{l}lcp(s ...

  2. SQL SERVER中获取表间主外键关系

    sql server 2008中的主外键关系获取方式: 转自:http://www.cnblogs.com/ke10/archive/2012/06/11/2544655.html SELECT OB ...

  3. Codeforces Round #281 (Div. 2) C. Vasya and Basketball 暴力水题

    C. Vasya and Basketball time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  4. 我们为什么需要Map-Reduce?

    在讨论我们是否真的需要Map-Reduce这一分布式计算技术之前,我们先面对一个问题,这可以为我们讨论这个问题提供一个直观的背景. 问题 我们先从最直接和直观的方式出发,来尝试解决这个问题: 先伪一下 ...

  5. Python如何import文件夹下的文件

    Python的import包含文件功能就跟PHP的include类似,但更确切的说应该更像是PHP中的require,因为Python里的import只要目标不存在就报错程序无法往下执行.要包含目录里 ...

  6. 由ORA-28001同一时候带出ORA-28000的解决的方法

    今天,在登录tomcat前台界面时发现不能登录,查看log后发现原来是ORA-28001: the password has expired的错误,这个错误是因为Oracle11G的新特性所致, Or ...

  7. 最好的PHP博客系统

    1.Wordpress http://www.wordpress.org/ B2基础上开发而来,这是国内用户比较喜欢而且用户较多的一个php博客程序,缘由是因为Wordpress提供大量插件和模板,让 ...

  8. kgtp linux内核调试

    作者:朱辉 开源网址:https://github.com/teawater http://teawater.github.io/kgtp/      有中文版说明 内核编绎: General set ...

  9. 6. python 字符串格式化表达式

    6. python 字符串格式化表达式 字符串格式化允许在一个单个的步骤中对一个字符串执行多个特定类型的替换 特别是给用户提示的时候,格式化非常方便 实现方法: 1.格式化表达式,类似于c语言的pri ...

  10. Ext.state.Manager.setProvider(new Ext.state.CookieProvider())

    Ext.state.Manager.setProvider(new Ext.state.CookieProvider()) 初始化Ext状态管理器,在Cookie中记录用户的操作状态,如果不启用,象刷 ...