专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

011.Nginx防盗链

一 盗链

1.1 盗链概述

盗链指的是在自己的界面展示非本服务器上的内容,通过技术手段获得其他服务器的资源。绕过他人资源展示页面,在自己页面向用户提供此内容,从而减轻自己服务器的负担,因为真实的空间和流量来自其他服务器。

因此,通常为了避免被盗链,通常Web服务器建议配置防盗链,其主要防盗链思路是能区别哪些请求是非正常用户请求。

二 防盗链

2.1 防盗链配置

语法:valid_referers none | blocked | server_names | string …;

默认值:——

可配置段:server, location

2.2 环境准备

主机
域名
IP
备注
nginx01
good.linuxds.com
172.24.10.21
被盗方
nginx02
steal.uclouda.com
172.24.10.22
盗链方

添加解析:/etc/hosts

 172.24.10.21   good.odocker.com
 172.24.10.22    steal.uclouda.com
 [root@nginx0X ~]# nginx -V
 nginx version: nginx/1.16.1

2.3 模拟盗链

 [root@nginx01 ~]# vi /etc/nginx/conf.d/good.conf   #创建模拟被盗方配置
 server {
     listen  80;
     charset utf-8;
         server_name  good.linuxds.com;
     location / {
         root   /usr/share/nginx/good;
         index  index.html;
         access_log  /var/log/nginx/good.access.log  main;
         error_log   /var/log/nginx/good.error.log  warn;
   }
 }
 [root@nginx01 ~]# mkdir -p /usr/share/nginx/good/images
 [root@nginx01 ~]# echo '<h1>Good</h1>' > /usr/share/nginx/good/index.html
 [root@nginx01 ~]# ll /usr/share/nginx/good/images  #上传一张测试图片
 total 60K
 -rw-r--r-- 1 root root 4.8K Mar 11 16:27 baidu.png
 [root@nginx02 ~]# vi /etc/nginx/conf.d/steal.conf  #创建盗链方配置
 server {
     listen  80;
     charset utf-8;
     server_name  steal.uclouda.com;
     location / {
         root   /usr/share/nginx/steal;
         index  index.html;
         access_log  /var/log/nginx/steal.access.log  main;
         error_log   /var/log/nginx/steal.error.log  warn;
   }
 }
 [root@nginx02 ~]# mkdir -p /usr/share/nginx/steal
 [root@nginx02 ~]# vi /usr/share/nginx/steal/index.html
 <html>
 <body>
 <br>盗链图片</br>
 <img src="http://good.linuxds.com/images/baidu.png">
 </body>
 </html>
 [root@nginx01 ~]# nginx -t -c /etc/nginx/nginx.conf    #检查配置文件
 [root@nginx01 ~]# nginx -s reload          #重载配置文件
 [root@nginx02 ~]# nginx -t -c /etc/nginx/nginx.conf    #检查配置文件
 [root@nginx02 ~]# nginx -s reload          #重载配置文件

浏览器访问:http://good.linuxds.com/images/baidu.png

86_1.png

浏览器访问盗链网站:http://steal.uclouda.com/

86_2.png

2.4 防盗链配置01

 [root@nginx01 ~]# vi /etc/nginx/conf.d/good.conf
 server {
     listen  80;
     charset utf-8;
     server_name  good.linuxds.com;
     location / {
         root   /usr/share/nginx/good;
         index  index.html;
         access_log  /var/log/nginx/good.access.log  main;
         error_log   /var/log/nginx/good.error.log  warn;
         valid_referers none blocked good.linuxds.com;
         if ($invalid_referer) {
             return 403;
         }
   }
 }
 [root@nginx01 ~]# nginx -t -c /etc/nginx/nginx.conf    #检查配置文件
 [root@nginx01 ~]# nginx -s reload          #重载配置文件

配置释义:

valid_referers:此关键字定义了白名单,即本机自身访问允许;

invalid_referer:此为内置变量,通过判断上一行中的valid_referers值会返回0或者1,

  • none代表请求头中没有referer信息,这一般是直接在浏览器输入图片网址;
  • blocked代表被防火墙过滤标记过的请求。如果访问来源不在白名单内,则返回403错误

浏览器访问:http://good.linuxds.com/images/baidu.png

86_3.png

浏览器访问盗链网站:http://steal.uclouda.com/

86_4.png

如上所示:已成功配置防盗链。

2.5 防盗链配置02

 [root@nginx01 ~]# vi /etc/nginx/conf.d/good.conf
 server {
     listen  80;
     charset utf-8;
         server_name  good.linuxds.com;
     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {   #针对特定文件类型
       valid_referers none blocked *.linuxds.com linuxds.com;
       access_log  /var/log/nginx/good.access.log  main;
       error_log   /var/log/nginx/good.error.log  warn;
       if ($invalid_referer) {
           rewrite ^/ https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1767274412,1868768041&fm=26&gp=0.jpg;
     }
   }
 }
 [root@nginx01 ~]# nginx -t -c /etc/nginx/nginx.conf    #检查配置文件
 [root@nginx01 ~]# nginx -s reload          #重载配置文件

配置释义:

rewrite:判断如果不是白名单第五行则进行重定向到自定义的固定链接。

浏览器访问盗链网站:http://steal.uclouda.com/

86_5.png

文章永久链接:https://tech.souyunku.com/20485

未经允许不得转载:搜云库技术团队 » 011.Nginx防盗链

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们