nginx配置防盗链

1,先准备两台主机,一台主机存放一张图片,另外一台主机拿第一台主机的图片
我的主机ip分别为
192.168.110.129
192.168.110.130
2,本地host文件给两个ip分配本地域名
192.168.110.129 www.source.com
192.168.110.130 www.steal.com
3,192.168.110.129这台主机存放一张图片
如图:

最原始访问两台主机界面如图:


4,分别在两台主机文件添加图片:
192.168.110.129

访问效果如图:

192.168.110.130添加图片如图

效果如图:

进行到这里,说明第二台主机成功盗用了第一台主机的图片

5,下面开始防盗:
使用命令打开,nginx.conf文件
查找:find / -name nginx.conf
vim /usr/local/nginx/conf/nginx.conf
增加如下代码:

 location ~* \.(gif|jpg|png|jpeg)$ {
      #alias /data/images/;此处是针对图片目录防止盗链,根据自行需要设置
      expires     30d;
      valid_referers *.source.com source.com;
      if ($invalid_referer) {
      rewrite ^/ http://ww4.sinaimg.cn/bmiddle/051bbed1gw1egjc4xl7srj20cm08aaa6.jpg;
      #return 404;
      }
 }

解释

第一行: location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$

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

第三行:valid_referers none blocked .source.com source.com;
“valid_referers none blocked" 其中"none" "blocked" 的意思分别是:
none代表没有referer;blocded代表有referer但是被防火墙或者是代理给去除了。
去除none blocked进行配置,实现完美防盗链
就是白名单,允许文件链出的域名白名单,自行修改成您的域名!
.source.com这个指的是子域名,域名与域名之间使用空格隔开!

第五行:rewrite ^/ http://ww4.sinaimg.cn/bmiddle/051bbed1gw1egjc4xl7srj20cm08aaa6.jpg;

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

如果我们是文件需要防盗链下载,把第五行:

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

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

这样,当别人输入文件下载地址,由于防盗链下载的作用就会跳转到您设置的这个链接!

6,重启nginx服务
/usr/local/nginx/sbin/nginx -s reloadservice nginx reload
再次访问主机,效果如图


7,补充知识,防盗链的三种方式

1,一般防盗链,就是我们目前所做的

2,针对图片目录进行防盗链,把上图代码alias注释打开,指定目录

3,使用第三方模块ngx_http_accesskey_module实现Nginx防盗链(请看本博客上一篇)

posted @   八戒vs  阅读(383)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示