当前位置: 首页 > news >正文

Nginx防盗链和Keepalived

一、Nginx防盗链

1、基于Referer的防盗链;

# 如果有多台Nginx,需要在Nginx网关设备上配置;
# 防盗链配置
valid_referers none | blocked | server_name | strings ...;
# none:只阻止携带referers字段的页面访问;
# blocked:通过不带http/https的域名访问;
# server_name:域名或者IP地址(生产环境一般配置域名);# 配置除了10这个地址以外的其他地址不能直接访问img资源;
location /img {valid_referers 192.168.1.10;if ($valid_referers){return 403;}
}# 测试环境建议使用curl,浏览器测试的时候可能会存在缓存;# 只响应curl头部信息
curl -I http://192.168.1.10/img/logo.png
# 带引用
curl -e "引用地址" -I http://192.168.1.10/img/l ogo.png# 备注:对于错误返回也可以自定义(401.html需要自己创建);
error_page   401  /401.html;location = /401.html {root   html;}
# 扩展,使用rewrite将防盗链地址重定向到指定页面图片;
location /img {valid_referers 192.168.1.10;if ($valid_referers){rewrite ^/ /img/erro.png break;}
}

2、使用secure_link模块;

location /protected/ {secure_link $arg_md5,$arg_expires;secure_link_md5 "secret$uri$remote_addr$expires";if ($secure_link = "") {return 403;}if ($secure_link = "0") {return 410;}
}# 这种方式需要在生成链接时添加MD5校验和过期时间参数。

3、结合location和map模块;

map $http_referer $bad_referer {default 0;"~*example\.com" 0;"~*othersite\.com" 0;"~*baidu\.com" 1;"~*google\.com" 1;
}server {location ~* \.(jpg|jpeg|png|gif)$ {if ($bad_referer) {return 403;}}
}

4、使用ngx_http_geoip_module;

# 对于需要基于地理位置限制的情况:geoip_country /usr/share/GeoIP/GeoIP.dat;
geo $allowed_country {default no;CN yes;US yes;
}server {location /protected/ {if ($allowed_country = no) {return 403;}}
}

5、注意事项;

1、测试配置前先使用nginx -t验证配置语法
2、某些移动端应用可能没有Referer头,需要根据实际情况调整
3、高级防盗链方案可能会影响性能,需要权衡利弊
4、对于CDN环境,需要考虑CDN的特殊头信息
以上方法可以根据实际需求单独或组合使用,以达到最佳的防盗链效果。

二、Keepalived

 1、部署Keepalived;

1)环境准备;

两台虚拟机,ip为172.168.52.101/172.168.52.102;

2)安装Keepalived;

所有虚机上都安装Keepalived;
# yum install keepalived -y

3)更改配置文件;

方法一:可以通过vim工具进行修改,文件路径:/etc/keepalived/keepalived.conf
# vim /etc/keepalived/keepalived.conf
方法二:可以通过FTP工具进行修改(推荐使用)
  • 172.16.52.101虚拟机
# 因为keepalived就是一个插件安装配置的过程,我们需要什么就学习什么从而去配置什么,一些邮件告警之类多余的我就精简化;! Configuration File for keepalived
global_defs {  router_id keep01					# 路由ID,自定义;
}
vrrp_instance VI_1 {state MASTER                    # 节点状态;interface ens192				# 网卡名称,需要保持一致;virtual_router_id 51    		# 虚拟路由ID,需要保持一致;priority 100					# 选举的方式;优先级,主节点要高于其他节点;advert_int 1					# 间隔时间,不需要更改authentication {				# 加密认证,设备之前要保持一致,不需要更改;auth_type PASSauth_pass 1111}virtual_ipaddress {				# VIP地址,按照生产学习需求更改;172.16.52.200}
}
  • 172.16.52.102虚拟机
! Configuration File for keepalived
global_defs {  router_id keep02					# 路由ID,自定义;
}
vrrp_instance VI_1 {state BACKUP                    # 节点状态;interface ens192				# 网卡名称,需要保持一致;virtual_router_id 51    		# 虚拟路由ID,需要保持一致;priority 50 					# 选举的方式;优先级,主节点要高于其他节点;advert_int 1					# 间隔时间,不需要更改authentication {				# 加密认证,设备之前要保持一致,不需要更改;auth_type PASSauth_pass 1111}virtual_ipaddress {				# VIP地址,按照生产学习需求更改;172.16.52.200}
}

4)测试

# 通过物理机Ping虚拟地址,长PING,观点主虚拟机,观察;
ping 172.16.52.200 -t
正在 Ping 172.16.52.200 具有 32 字节的数据:
来自 172.16.52.200 的回复: 字节=32 时间<1ms TTL=64
来自 172.16.52.200 的回复: 字节=32 时间<1ms TTL=64
来自 172.16.52.200 的回复: 字节=32 时间<1ms TTL=64
来自 172.16.52.200 的回复: 字节=32 时间<1ms TTL=64
请求超时。
来自 172.16.52.200 的回复: 字节=32 时间<1ms TTL=64
来自 172.16.52.200 的回复: 字节=32 时间<1ms TTL=64
来自 172.16.52.200 的回复: 字节=32 时间<1ms TTL=64
来自 172.16.52.200 的回复: 字节=32 时间<1ms TTL=64# 可以看到在我们init 0 强制关掉一台第一台主机是,会出现一次请求超时后vip会直接漂移到第二胎电脑上,我们也可以通过ip a查看vip的漂移情况;

备注:谢谢CSDN为了提供记录笔记的平台!

http://www.dtcms.com/a/291733.html

相关文章:

  • VirtualBox安装提示security安全问题
  • 【coze扣子】第1篇:coze快速入门
  • 消息队列学习
  • 3.4 安全-分布式-数据库-挖掘
  • LNMP平台部署
  • 【uboot/kernel1】启动流程,环境变量,内存,initramfs
  • 【大模型记忆实战Demo】基于SpringAIAlibaba通过内存和Redis两种方式实现多轮记忆对话
  • 本地代理和服务器代理区别
  • 【AI时代速通QT】第五节:Qt Creator如何引入第三方库,以OpenCV为例
  • 深入解析MIPI C-PHY (三)C-PHY 功耗屠龙刀
  • FunASR 说话人识别 Xvector 环境版本配置
  • 一文读懂深度模型优化器,掌握炼丹工具
  • 【数学建模】基础知识
  • FTP考点
  • SparkSQL 聚合函数 COUNT 对 NULL 值的处理
  • css3地球转动模型(动态数据)
  • RxSwift 核心解析
  • 生成式AI導論 2024】第9講:以大型語言模型打造的AI Agent 学习记录
  • Nacos 注册中心高频面试题及解析
  • v0+claude+cursor构建初始脚手架
  • ADA4522-2ARMZ-R7 ADI亚德诺 双通道零漂移运算放大器 工业高精度测试设备应用
  • 您需要了解的有关 GIS 中基于位置和基于属性的查询的所有信息
  • [pdf epub]《软件方法》电子书202507更新下载
  • thinkphp入门
  • 企业级IIS配置手册:安全加固/负载均衡/性能优化最佳实践
  • C++性能优化擂台技术文章大纲
  • Axios Token 设置示例
  • MySql 运维性能优化
  • React 项目性能优化概要
  • Vue-21-利用Vue3的axios+Python的flask实现前后端交互功能