博客
关于我
011.Nginx防盗链
阅读量:439 次
发布时间:2019-03-06

本文共 3667 字,大约阅读时间需要 12 分钟。

一 盗链

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 '

Good

' > /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   4   5 
盗链图片
6 7 8
 
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 }
 
1 [root@nginx01 ~]# nginx -t -c /etc/nginx/nginx.conf	#检查配置文件  2 [root@nginx01 ~]# nginx -s reload			#重载配置文件
 
配置释义:
rewrite:判断如果不是白名单第五行则进行重定向到自定义的固定链接。
浏览器访问盗链网站:http://steal.uclouda.com/

转载地址:http://lrwyz.baihongyu.com/

你可能感兴趣的文章
Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
查看>>
Mysql学习总结(61)——MySQL优化之DBA级优化整理汇总
查看>>
Mysql学习总结(64)——Mysql配置文件my.cnf各项参数解读
查看>>
Mysql学习总结(66)——设置MYSQL数据库编码为UTF-8
查看>>
Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
查看>>
Mysql学习总结(6)——MySql之ALTER命令用法详细解读
查看>>
Mysql学习总结(71)——MySQL 重复记录查询与删除总结
查看>>
Mysql学习总结(73)——MySQL 查询A表存在B表不存在的数据SQL总结
查看>>
Mysql学习总结(77)——温故Mysql数据库开发核心原则与规范
查看>>
Mysql学习总结(78)——MySQL各版本差异整理
查看>>
Mysql学习总结(79)——MySQL常用函数总结
查看>>
Mysql学习总结(7)——MySql索引原理与使用大全
查看>>
Mysql学习总结(80)——统计数据库的总记录数和库中各个表的数据量
查看>>
Mysql学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
查看>>
Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结
查看>>
Mysql学习总结(84)—— Mysql的主从复制延迟问题总结
查看>>
mysql安装卡在最后一步解决方案(附带万能安装方案)
查看>>
mysql安装和启动命令小结
查看>>
MySQL安装配置教程(非常详细),从零基础入门到精通,看完这一篇就够了
查看>>
mysql安装配置简介
查看>>