lnmp下Nginx服务器设置防盗链最简单方法

服务器技术, 转自点点 13 年前 回复

, , , ,

因为nginx不支持.htaccess,所以在防盗链上比较麻烦。

1.确定要修改的文件

如果你安装lnmp后,没有新建站点,而是使用默认站点,那你需要修改的文件是/usr/local/nginx/conf/nginx.conf

如果你新建了站点,那么要修改的文件是/usr/local/nginx/conf/vhost/这个文件夹下面的相应文件,通常应该是 域名.conf

2.根据你的情况,下载或者打开相应的.conf文件,注意先备份

找到下面内容

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

把它修改为类似下面的样子

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
valid_referers none blocked www.domin.com domin.com;
if ($invalid_referer) {
rewrite ^/ http://otherdomin.com/404.jpg;
#return 404;
}
expires 30d;
}

特别说明:
以上都不是真正防盗链,但是在其他网站调用的本站图片都已经作了防护了,如果用户通过浏览器直接输入图片地址或下载地址,仍然会显示图片,仍可下载文件,因为 valid_referers 里多了“none blocked”。

最后说下ngingx下如何彻底地实现真正意义上的防盗链,那就是把“none blocked”去掉,这样浏览器直接输入就不会显示图片了(别忘了改成自己的域名)

你要修改的地方

gif|jpg|jpeg|....,这些是你想要屏蔽的文件类型,可以根据情况修改

domin.com www.domin.com,修改为你网站的域名,或者是你允许显示你网站图片的其他网站域名,注意中间用空格分开,而不是逗号

http://otherdomin.com/404.jpg,显示给盗链者看到的图片,注意不要放到domin.com上,因为放盗链的作用,那样对方是看不到的,可以上传到一些支持外联的网络相册上。

那么如果百度Google等搜索引擎收录到你站,出现防盗链怎么办?
所以最后代码可以修改成这样:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
valid_referers *.domin.com domin.com ~\.google\. ~\.baidu\. ~\.so\. ~\.sogou\. ~\.soso\. ~\.bing\.;
if ($invalid_referer) {
rewrite ^/ http://otherdomin.com/404.jpg;
#return 404;
}
expires 30d;
}

*.domain.com *表示该域名下二级域名,亲测可用;
~\.google\. 正则过滤google链接,这种方法我就不太清楚了,如果有人,麻烦告知一下;

3.保存修改后的文件,上传覆盖原始文件

需要重新启动lnmp后才能看到效果,命令是

重启lnmp:lnmp restart

停止lnmp:/root/lnmp stop lnmp stop

启动lnmp:/root/lnmp start lnmp start

这样我们就实现了图片的防盗链,实际效果看下面

对了 不要忘了重启lnmp:
/root/lnmp restart lnmp restart

转自原文

支付宝打赏微信打赏

如果此文对你有帮助,欢迎打赏作者。

发表评论

欢迎回来 (打开)

(必填)