本文主要是介绍宝塔php防盗链,宝塔面板利用nginx服务设置图片防盗链规则,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
蓝卡手上有3台ECS,最近发现1台ECS的状态不太正常,负载、流量都有些偏高,这个ECS上的站点不多,流量最大的站点1天也就3000-4000的pv,站点的图片在上传钱也经过压缩,理论上资源消耗不会这么大。
曾经遇到过被反代的,已经能解决了,被DDOS的可能性也不大,剩下最大的可能就是被盗链了,经过排查,发现了1个网站,内容基本就是采集我的站点的,甚至图片都是直接调用的,看来宝塔默认的防盗链并没有起到效果,就准备自己进行操作。
Nginx设置防盗链的方法
下面为完整代码#SECURITY-START 防盗链配置
location ~ .*\.(jpg|jpeg|gif|png|js|css)$
{
expires 30d;
access_log off;
valid_referers none blocked www.domain.com domain.com;
if ($invalid_referer){
rewrite ^/ https://rmt.dogedoge.com/fetch/*****.jpg;
#return 404;
}
}
代码解释
location ~ .*\.(jpg|jpeg|gif|png|js|css)$
(jpg|jpeg|gif|png|js|css)设置防盗链文件类型,可以自行修改文件类型,如果你还想添加其他防盗链内容,直接添加就可以,每个后缀用“|”符号分开!
valid_referers none blocked *.domain.com domain.com;
valid_referers none blocke后面的值是允许访问图片,也就是授权调用文件的域名。
就是白名单,允许文件链出的域名白名单,自行修改成您的域名!
建议将搜索引擎的域名也加入白名单,未测试有效性。
*.baidu.com *.google.com *.bing.com *.so.com *.sogou.com *.sm.cn *.toutiao.com
域名与域名之间使用空格隔开!
rewrite ^/ https://rmt.dogedoge.com/fetch/*****.jpg;
这个图片是盗链返回的图片,也就是替换盗链网站所有盗链的图片。
如果对方盗用你的图片,会显示一个默认图片,这个急救室默认图片。
切记,这个图片不能用你的域名,因为防盗链的作用,盗链者的网站所盗链图片会显示X符号。
nginx彻底地实现真正意义上的防盗链
但是这样并不是完全的防盗链,这只要通过浏览器直接输入图片地址,仍然会显示图片,仍然可以右键图片另存为下载文件!
我们来看第三行:valid_referers none blocked *.domain.com domain.com;
valid_referers 里多了“none blocked”
我们把“none blocked”删掉,改成
valid_referers *.domain.com domain.com;
nginx彻底地实现真正意义上的防盗链完整的代码应该是这样的:location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
valid_referers *.domain.com domain.com;
if ($invalid_referer) {
rewrite ^/ http://www.domain.com/images/404.jpg;
#return 404;
}
expires 30d;
}
重启nginx服务
设置完毕后,需要重启一次nginx服务让他加载防盗链规则。
LNMP的话可以使用/etc/init.d/nginx restart或者直接lnmp restart重启即可。
宝塔面板的话,在软件商店,运行环境里面找到nginx,点击,然后服务里面点击重启即可。
尾语
一顿操作后,效果已经实现,在对方网站上显示的防盗链图片还是不错的。「你访问的网站是盗版,请访问主站Domain.com」
这篇关于宝塔php防盗链,宝塔面板利用nginx服务设置图片防盗链规则的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!