有些时候,大家不想让别人调用自己的图片,一是因为个人版权的问题,再一点就是会增加服务器的负载、还会产生一些没必要的流量。
其实在Nginx里面,很容易就做到防盗链的,在nginx.conf文件加入一个localtion配置项。
下面请看配置:
location ~ .*\.(jpg|jpeg|JPG|png|gif|icon)$ {
valid_referers blocked www.qipa250.com qipa250.com;
if ($invalid_referer) {
return 404;
}
}
gif|jpg|jpeg|….,这些是你想要屏蔽的文件类型,可以根据情况修改。
只需要把文中 www.qipa250.com qipa250.com 修改为你允许显示你网站图片的其他网站域名,注意中间用空格分开,而不是逗号。
这样直接返回的是404页面。也可以用http://domain.com/404.jpg,显示给盗链者看到的图片,注意不要放到自己的域名上,因为放盗链的作用,那样对方是看不到的,可以上传到一些支持外联的网络相册上。
当然了,也可以设置某个目录防盗链,只需把localtion匹配的改成一个目录就可以了,比如:
location ~ ^/images/ {
valid_referers none blocked www.qipa250.com qipa250.com;
if ($invalid_referer) {
return 404;
}
#rewrite ^/ http://otherdomin.com/404.jpg;
}
这样就对images这个目录设置防盗链了。
说明:如果valid_referers条件判断未通过,nginx则会赋值invalid_referer 为true
语法:valid_referers
none | blocked | server_names | string…
参数说明:
none不允许“Referer”来源头部为空的情况
blocked “Referer”不为空,但是里面的值被代理或者防火墙删除了,这些值都不以http://或者https://开头,而是“Referer: XXXXXXX”这种形式
server_names “Referer”来源头部包含当前的server_names(当前域名)
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
其中“gif|jpg|jpeg|png|bmp|swf”设置防盗链文件类型,自行修改,每个后缀用“|”符号分开!
valid_referers none blocked *.qipa250.com qipa250.com;
就是白名单,允许文件链出的域名白名单,自行修改成您的域名!*.qipa250.com这个指的是子域名,域名与域名之间使用空格隔开!
rewrite ^/ http://www.qipa250.com/static/images/404.jpg;
这个图片是盗链返回的图片,也就是替换盗链网站所有盗链的图片。这个图片要放在没有设置防盗链的网站上,因为防盗链的作用,这个图片如果也放在防盗链网站上就会被当作防盗链显示不出来了,盗链者的网站所盗链图片会显示X符号。
这样设置差不多就可以起到防盗链作用了,上面说了,这样并不是彻底地实现真正意义上的防盗链!
我们来看这一行:valid_referers none blocked *.qipa250.com qipa250.com;
valid_referers 里多了“none blocked”
我们把“none blocked”删掉,改成
valid_referers *.qipa250.com qipa250.com;
nginx彻底地实现真正意义上的防盗链完整的代码应该是这样的:
location ~* \.(gif|jpg|png|jpeg)$ {
expires 30d;
valid_referers *.qipa250.com www.qipa250.com m.qipa250.com;
if ($invalid_referer) {
rewrite ^/ http://ww4.sinaimg.cn/bmiddle/051bbed1gw1egjc4xl7srj20cm08aaa6.jpg;
#return 404;
}
}
这样您在浏览器直接输入图片地址就不会再显示图片出来了,也不可能会再右键另存什么的。
rewrite ^/ http://www.qipa250.com/static/images/404.jpg;
这个是给图片防盗链设置的防盗链返回图片,如果我们是文件需要防盗链下载,把第五行:
rewrite ^/ http://www.qipa250.com/static/images/404.jpg;
改成一个链接,可以是您主站的链接,比如把第五行改成:
rewrite ^/ http://www.qipa250.com;
这样,当别人输入文件下载地址,由于防盗链下载的作用就会跳转到您设置的这个链接!
最后,配置文件设置完成别忘记重启nginx生效!
http://www.qipa250.com/article-15345.html