Nginx--防盗链问题

embedded/2024/10/18 14:26:15/

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除

一、什么是盗链

盗链是一种网络行为,指的是一个网站未经授权,直接使用另一个网站资源(如图片、视频、音乐、文件等)的链接地址,使得这些资源在未经允许的情况下被访问和使用。这种行为通常发生在内容提供商希望保护其资源不被他人非法使用的情况下。盗链可能会导致以下几个问题:

  • 宽带消耗
  • 版权侵犯
  • 广告收入损失
  • 服务滥用
  • 法律风险

二、防盗链

1、实现模块

Nginx 防盗链主要是通过ngx_http_referet_module模块实现的,该模块通过检查HTTP请求中的 Referer 头部来判断请求是否合法。如果请求中的 Referer与配置的规则不匹配,则可以返回403状态码,拒绝访问资源

2、防盗链配置

配置要点

 [root@nginx-server ~]# vim /etc/nginx/nginx.conf# 日志格式添加"$http_referer"log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# valid_referers 使用方式Syntax: valid_referers none | blocked | server_names | string ...;Default: —Context: server, location
  • none允许没有http_refer的请求访问资源
  • blocked:允许不是http://开头的,不带协议的请求访问资源--被防火墙过滤掉的
  • server_names:只允许指定ip/名来的请求访问资源(白名单

三、实验

1、环境准备

主机名ip地址说明
centos-210.0.0.3nginx服务器
centos-110.0.0.2nginx服务器,对centos-2进行盗链
centos-310.0.0.4nginx服务器,对centos-2进行盗

2、盗链配置

2.1、使用centos-2进行nginx服务发布:

 [root@centos-2 ~]# cat /etc/nginx/conf.d/default.conf server {listen 80;server_name localhost;location ~ .*\.(gif|jpg|png|jpeg)$ {root /usr/share/nginx/html;index K8s.png;}}

浏览器测试访问:

2.2、在centos-1中对其进行盗链:

 [root@centos ~]# cat /usr/share/nginx/html/index.html <html><head><meta charset="utf-8">     #用来做实验  红色的底<title>qf.com</title></head><body style="background-color:red;"><img src="http://10.0.0.3/K8s.png"/></body></html>

浏览器访问,发现盗链成功

3、防盗链配置

3.1、更改centos-2进行防盗链配置

 [root@centos-2 ~]# cat /etc/nginx/conf.d/default.conf server {listen 80;server_name localhost;location ~ .*\.(gif|jpg|png|jpeg)$ {root /usr/share/nginx/html;index K8s.png;valid_referers server_names 10.0.0.2;   # 表示只允许10.0.0.2访问if ($invalid_referer){return 502;}}}

测试,发现,10.0.0.2能够进行访问,10.0.0.4不能够访问到

浏览器测试访问:

当然,实验中可能会遇到缓存问题,建议使用谷歌下Ctrl+Shift+N使用无痕模式实验。

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。 

学习永无止境,让我们共同进步!!


http://www.ppmy.cn/embedded/97677.html

相关文章

EmguCV学习笔记 VB.Net 第1章 EmguCV

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV学习笔记目录 Vb.net EmguCV学习笔记目录 C# 笔者的博客网址&#xff1a;VB.Net-CSDN博客 教程相关说明以及如何获得pdf教程…

vulnhub系列:Hackademic.RTB1

vulnhub系列&#xff1a;Hackademic.RTB1 靶机下载 一、信息收集 nmap 扫描存活&#xff0c;根据 mac 地址寻找 IP nmap 192.168.23.0/24nmap 扫描端口&#xff0c;开放端口&#xff1a;22、80 nmap 192.168.23.143 -p- -Pn -sV -O访问80端口&#xff0c;页面发现 target …

【热门文章】Eureka原理实践

以下是关于“Eureka 原理实践”的一些可能的步骤和要点&#xff1a; 一、Eureka 原理概述 Eureka 是 Netflix 开发的服务发现框架&#xff0c;其核心原理包括服务注册、服务发现和心跳机制。 服务注册&#xff1a;服务提供者在启动时将自身的信息&#xff08;如服务名称、IP 地…

SQL(Structured Query Language)规范

SQL&#xff08;Structured Query Language&#xff09;是一种用于管理关系数据库的标准语言。为了确保SQL语句的可读性和一致性&#xff0c;遵循一定的SQL编写规范是非常重要的。下面是一些常见的SQL编写规范建议&#xff1a; SQL编写规范 1. 命名规范 表名和字段名&#x…

Django Project | 云笔记练习项目

文章目录 功能整体架构流程搭建平台环境子功能先创建用户表 并同步到数据库1.用户注册密码存储 -- 哈希算法唯一索引引发的重复问题 try登陆状态保持 -- 详细看用户登录状态 2. 用户登录会话状态时间 cookie用户登录状态校验 3. 网站首页4.退出登录5.笔记模块 列表页添加笔记 …

【区块链+金融服务】基于 VoneBaaS 的区块链金融服务管理平台 | FISCO BCOS应用案例

在顺应数字经济发展、强化科技赋能金融的背景下&#xff0c;中央及地方政策层面鼓励“区块链 金融”应用示范项目&#xff0c; 在中小企业征信及风险管理、供应链金融等重点领域开展应用&#xff0c;探索建立区块链金融风险监控体系。同时&#xff0c;随着 科技金融服务逐步升…

RabbitMQ的介绍

一、什么是MQ MQ(message queue)&#xff0c;从字面意思上看就个 FIFO 先入先出的队列&#xff0c;只不过队列中存放的内容是 message 而已&#xff0c;它是一种具有接收数据、存储数据、发送数据等功能的技术服务。 消息指的是两个应用间传递的数据。数据的类型有很多种形式…

python 使用正则表达式判断图片路径是否是超链接

在Python中&#xff0c;判断一个给定的字符串&#xff08;假设为图片路径&#xff09;是否是网页链接&#xff08;URL&#xff09;&#xff0c;你可以通过检查该字符串是否符合URL的基本格式来实现。虽然这个方法不能保证链接一定指向图片&#xff0c;但它能判断该字符串是否是…