一 盗链

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
  1 172.24.10.21	good.odocker.com
2 172.24.10.22 steal.uclouda.com
3 [root@nginx0X ~]# nginx -V
4 nginx version: nginx/1.16.1

2.3 模拟盗链

  1 [root@nginx01 ~]# vi /etc/nginx/conf.d/good.conf	#创建模拟被盗方配置
2 server {
3 listen 80;
4 charset utf-8;
5 server_name good.linuxds.com;
6 location / {
7 root /usr/share/nginx/good;
8 index index.html;
9 access_log /var/log/nginx/good.access.log main;
10 error_log /var/log/nginx/good.error.log warn;
11 }
12 }
  1 [root@nginx01 ~]# mkdir -p /usr/share/nginx/good/images
2 [root@nginx01 ~]# echo '<h1>Good</h1>' > /usr/share/nginx/good/index.html
3 [root@nginx01 ~]# ll /usr/share/nginx/good/images #上传一张测试图片
4 total 60K
5 -rw-r--r-- 1 root root 4.8K Mar 11 16:27 baidu.png

  1 [root@nginx02 ~]# vi /etc/nginx/conf.d/steal.conf	#创建盗链方配置
2 server {
3 listen 80;
4 charset utf-8;
5 server_name steal.uclouda.com;
6 location / {
7 root /usr/share/nginx/steal;
8 index index.html;
9 access_log /var/log/nginx/steal.access.log main;
10 error_log /var/log/nginx/steal.error.log warn;
11 }
12 }
  1 [root@nginx02 ~]# mkdir -p /usr/share/nginx/steal
2 [root@nginx02 ~]# vi /usr/share/nginx/steal/index.html
3 <html>
4 <body>
5 <br>盗链图片</br>
6 <img src="http://good.linuxds.com/images/baidu.png">
7 </body>
8 </html>
  1 [root@nginx01 ~]# nginx -t -c /etc/nginx/nginx.conf	#检查配置文件
2 [root@nginx01 ~]# nginx -s reload #重载配置文件
3 [root@nginx02 ~]# nginx -t -c /etc/nginx/nginx.conf #检查配置文件
4 [root@nginx02 ~]# nginx -s reload #重载配置文件
浏览器访问:http://good.linuxds.com/images/baidu.png
浏览器访问盗链网站:http://steal.uclouda.com/

2.4 防止盗链配置01

  1 [root@nginx01 ~]# vi /etc/nginx/conf.d/good.conf
2 server {
3 listen 80;
4 charset utf-8;
5 server_name good.linuxds.com;
6 location / {
7 root /usr/share/nginx/good;
8 index index.html;
9 access_log /var/log/nginx/good.access.log main;
10 error_log /var/log/nginx/good.error.log warn;
11 valid_referers none blocked good.linuxds.com;
12 if ($invalid_referer) {
13 return 403;
14 }
15 }
16 }
  1 [root@nginx01 ~]# nginx -t -c /etc/nginx/nginx.conf	#检查配置文件
2 [root@nginx01 ~]# nginx -s reload #重载配置文件
配置释义:
valid_referers:此关键字定义了白名单,即本机自身访问允许;
invalid_referer:此为内置变量,通过判断上一行中的valid_referers值会返回0或者1,
  • none代表请求头中没有referer信息,这一般是直接在浏览器输入图片网址;
  • blocked代表被防火墙过滤标记过的请求。如果访问来源不在白名单内,则返回403错误
  • 浏览器访问:http://good.linuxds.com/images/baidu.png
    浏览器访问盗链网站:http://steal.uclouda.com/
    如上所示:已成功配置防盗链。

    2.5 防盗链配置02

      1 [root@nginx01 ~]# vi /etc/nginx/conf.d/good.conf
    2 server {
    3 listen 80;
    4 charset utf-8;
    5 server_name good.linuxds.com;
    6 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { #针对特定文件类型
    7 valid_referers none blocked *.linuxds.com linuxds.com;
    8 access_log /var/log/nginx/good.access.log main;
    9 error_log /var/log/nginx/good.error.log warn;
    10 if ($invalid_referer) {
    11 rewrite ^/ https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1767274412,1868768041&fm=26&gp=0.jpg;
    12 }
    13 }
    14 }
    配置释义:
    rewrite:判断如果不是白名单第五行则进行重定向到自定义的固定链接。
    浏览器访问盗链网站:http://steal.uclouda.com/

    011.Nginx防盗链的更多相关文章

    1. 六、Nginx 防盗链

      盗链是指一个网站的资源(图片或附件)未经允许在其它网站提供浏览和下载.尤其热门资源的盗链,对网站带宽的消耗非常大,本文通过nginx的配置指令location来实现简单的图片和其它类型文件的防盗链. ...

    2. Nginx防盗链的3种方法

      一:一般的防盗链如下: location ~* \.(gif|jpg|png|swf|flv)$ { valid_referers none blocked www.jzxue.com jzxue.c ...

    3. Nginx防盗链配置案例配置,Nginx的知识分享

      防盗链的含义:网站内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容. 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址 ...

    4. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)

      一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

    5. nginx防盗链、nginx访问控制、nginx解析php相关配制、nginx代理

      1.nginx防盗链编辑:vim /usr/local/nginx/conf/vhost/test.com.conf写入: location ~* ^.+\.(gif|jpg|png|swf|flv| ...

    6. nginx防盗链配置

      Ps:防盗链的意义就是保证自己的版权,不免网站的流量流失,为他人做嫁衣.下面是网上看到的三种方法: 修改 /usr/local/nginx/conf/nginx.conf 这个配置文件.找到locat ...

    7. Nginx防盗链、访问控制、解析PHP相关配置及Nginx代理

      6月11日任务 12.13 Nginx防盗链12.14 Nginx访问控制12.15 Nginx解析php相关配置12.16 Nginx代理 扩展502问题汇总 http://ask.apelearn ...

    8. 使用NGINX+LUA实现WAF功能 和nginx 防盗链

      使用NGINX+LUA实现WAF功能 一.了解WAF 1.1 什么是WAF Web应用防护系统(也称:网站应用级入侵防御系统 .英文:Web Application Firewall,简称: WAF) ...

    9. Linux centos VMware Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理

      一.Nginx防盗链 配置如下,可以和上面的配置结合起来 location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|x ...

    随机推荐

    1. 深入了解C#(TPL)之Parallel.ForEach异步

      前言 最近在做项目过程中使用到了如题并行方法,当时还是有点犹豫不决,因为平常使用不多, 于是借助周末时间稍微深入了下,发现我用错了,故此做一详细记录,希望对也不是很了解的童鞋在看到本文此文后不要再犯和 ...

    2. WeChair项目Alpha冲刺(9/10)

      团队项目进行情况 1.昨日进展    Alpha冲刺第九天 昨日进展: 前端:安排页面美化,设计实名认证 后端:更新dao层代码 数据库:修改数据表属性,与后端部署数据库交互 2.今日安排 前端:继续 ...

    3. Java 中的线程 thread

      一.问:线程有哪些状态? new, runnable, running, waiting, dead 线程状态间的流转 二.问:线程实现方式? 实现 Runnable 接口,然后new Thread, ...

    4. v-on事件修饰符

      .stop阻止冒泡 .prevent阻止默认行为 .capture实现捕获触发事件的机制(从大到小) .self实现只有点击当前元素时,才能出发事件处理函数 .once只触发一次事件函数 .stop和 ...

    5. android 抓取native层奔溃

      使用android的breakpad工具 使用这个工具需要下载Breakpad的源码,然后进行编译,编译之后会生成两个工具 我们使用这两个工具来解析奔溃的位置.这里我们可以下载已经编译好的工具 下载地 ...

    6. MySQL8.0窗口函数实践及小结

      MySQL8.0之前,做数据排名统计等相当痛苦,因为没有像Oracle.SQL SERVER .PostgreSQL等其他数据库那样的窗口函数.但随着MySQL8.0中新增了窗口函数之后,针对这类统计 ...

    7. 最短路之Floyd

      #include<bits/stdc++.h>using namespace std;const int maxn = 300+10;int n,m,f[maxn][maxn],t; in ...

    8. vue中使用element2

      阻止谷歌下记住密码 当我们将input框的类型设置为密码框的时候,就会出现下面这种效果,不仅样式不统一,有的时候,密码框的上面并不是用户名,而是其他的内容,也会被强制显示为用户名: 首先需要解决样式问 ...

    9. html+css快速入门教程(2)

      3 标签 3.1 div div 标签表示一个区块或者区域,你可以把它看成是一个容器,比如说一个 竹篮 作用:用来把网页分块 并且里面可以装任意的html元素 <div>这里是一个div容 ...

    10. 理解与使用Javascript中的回调函数 -2

      在javascript中回调函数非常重要,它们几乎无处不在.像其他更加传统的编程语言都有回调函数概念,但是非常奇怪的是,完完整整谈论回调函数的在线教程比较少,倒是有一堆关于call()和apply() ...