首页 » 服务器 » 如何解决nginx服务器图片防盗链的问题和方法

如何解决nginx服务器图片防盗链的问题和方法

高蒙 2016/08/27 15:59 2.4k浏览 0评论 Nginx


为什么,我会想到防图片盗链的问题呢?一来是真的有人盗链,增加我服务器的压力。二来,就是亲自尝试一下,防盗链能不能成功。网上的nginx防盗链教程很多,但是呢?真正的可以使用的并不多,而且有的防盗链的教程并不是真正彻底的防盗链。我们要求的图片防盗链是这样的。

一、别人网站加载我们的图片是无法显示的。

二、别人右键保存图片也是无效的。下载不了,我们的图片。

基本上,网上的教程第一个都可以轻松的实现,但是第二步骤真的很少有实现的。

那么,nginx应该怎么样彻底地实现真正意义上的防盗链呢?

第一、我们来看下nginx如何设置图片防盗链的方法。

如果您使用的是默认站点,也就是说,您的站点可以直接输入服务器IP访问的,使用root登录,修改 /usr/local/nginx/conf/nginx.conf 这个配置文件。

如果您新建了站点,那么修改/usr/local/nginx/conf/vhost/你的域名.conf 这个配置文件,找到:

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

把这一段删掉,修改成:

location ~* \.(gif|jpg|png|jpeg)$ {
    expires     30d;
    valid_referers  *.shuchengxian.com www.shuchengxian.com;
    if ($invalid_referer) {
        rewrite ^/ http://www.shuchengxian.cn/404.jpg;
    }
}

代码解释:

第一行: 

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

其中“gif|jpg|jpeg|png|bmp|swf”设置防盗链文件类型,自行修改,每个后缀用“|”符号分开!

第三行:

valid_referers  *.shuchengxian.com www.shuchengxian.com;

就是白名单,允许文件链出的域名白名单,自行修改成您的域名!*.shuchengxian.com这个指的是子域名,域名与域名之间使用空格隔开!

第五行:

rewrite ^/ http://www.shuchengxian.cn/404.jpg;

这个图片是盗链返回的图片,也就是替换盗链网站所有盗链的图片。

注意:

这个图片要放在没有设置防盗链的网站上,因为防盗链的作用,这个图片如果也放在防盗链网站上就会被当作防盗链显示不出来了,盗链者的网站所盗链图片会显示X符号。

这样设置差不多就可以起到防盗链作用了,上面说了,这样并不是彻底地实现真正意义上的防盗链!

一般上面的操作,基本就可以达到基础的nginx图片防盗链的效果了。

第二、nginx彻底地实现图片防盗链的设置方法:

第五行:

rewrite ^/  http://www.shuchengxian.cn/404.jpg;

这个是给图片防盗链设置的防盗链返回图片,如果我们是文件需要防盗链下载,把第五行:

rewrite ^/  http://www.shuchengxian.cn/404.jpg;

改成一个链接,可以是您主站的链接,比如把第五行改成:

rewrite ^/ http://www.shuchengxian.com;

这样,当别人输入文件下载地址,由于防盗链下载的作用就会跳转到您设置的这个链接!最后,配置文件设置完成别忘记重启nginx生效!





相关文章

我有话说

站长昵称:(*)

输入内容:

选个头像:

评论列表

    ...

    高蒙

    男, PHP程序猿

    文章

    485

    标签

    42

    热度

    10w+

    南京, 江苏, 中国

    人生要是没有理想, 那跟咸鱼有什么分别。