nginx设置图片防盗链(亲测有效)

因为nginx不支持.htaccess,所以在防盗链上比较麻烦。上网搜了一下,代码很容易搜到,甚至lnmp一键安装包的作者Licess都给出了这样一段防盗链代码,但是还是有很多人叫着方法无效,这是为什么呢?

Licess给出的代码如下:
[code lang=”plain”]
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
valid_referers none blocked zhukun.net *.zhukun.net *.youdao.com *.zhuaxia.com *.xianguo.com *.google.cn *.google.com *.google.com.tw *.google.com.sg *.google.com.hk *.bloglines.com image.soso.com cn.bing.com image.baidu.com *.feedburner.com *.feedsky.com;
if ($invalid_referer) {
rewrite ^/ http://image161.poco.cn/mypoco/myphoto/20100506/20/124649620100506204112026.jpg;
#return 404;
}
}

把这段代码加入到/usr/local/nginx/conf/nginx.conf的server段里,然后执行如下命令重启lnmp:
/root/lnmp restart

很多人在测试了这个方法以后,发现没有效果,这是为什么呢?原因在于上面这段代码跟另一段代码产生了冲突。同样是修改/usr/local/nginx/conf/nginx.conf文件,把其中的下面这段代码删除:
[code lang=”plain”]
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

删除以后,再次重启lnmp,你会发现,防盗链设置已经生效了。

也可以将两者组合,形成一段新的代码:
[code lang=”plain”]
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
valid_referers none blocked *.zhukun.net *.youdao.com *.zhuaxia.com *.xianguo.com *.google.cn *.google.com *.google.com.tw *.google.com.sg *.google.com.hk *.bloglines.com image.soso.com cn.bing.com image.baidu.com *.feedburner.com *.feedsky.com;
if ($invalid_referer) {
rewrite ^/ http://image161.poco.cn/mypoco/myphoto/20100506/20/124649620100506204112026.jpg;
#return 404;
}
}

重启lnmp,你会发现,防盗链设置仍然有效。

22 responses to “nginx设置图片防盗链(亲测有效)”

  1. 哎,我的实现不了 郁闷,
    我的完整代码:
    server
    {
    listen 80;
    server_name imgurl.qifangjie.com;
    index index.html index.htm index.php default.html default.htm default.php;
    root /aliyun/accessory;

    include none.conf;
    location ~ .*\.(php|php5)?$
    {
    try_files $uri =404;
    fastcgi_pass unix:/tmp/php-cgi.sock;
    fastcgi_index index.php;
    include fcgi.conf;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
    expires 30d;
    }

    location ~ .*\.(js|css)?$
    {
    expires 12h;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
    valid_referers none blocked *.qifangjie.com;
    if ($invalid_referer) {
    rewrite ^/ http://image161.poco.cn/mypoco/myphoto/20100506/20/124649620100506204112026.jpg;
    #return 404;
    }
    }

    access_log off;
    }

Leave a Reply

Your email address will not be published. Required fields are marked *