0%

Nginx 防盗链配置:通过 Referer 验证保护资源

防盗链是防止其他网站非法引用本网站资源(如图片、视频、CSS)的技术手段,Nginx 通过valid_referers指令检查请求的Referer头,识别非法来源并拒绝访问,从而节省带宽、保护知识产权。本文详细讲解 Nginx 防盗链的配置方法、参数含义及实战案例。

防盗链原理:基于 Referer 头验证

  • Referer 头:客户端请求资源时,HTTP 协议会在请求头中包含Referer字段,记录请求的来源页面 URL(如https://example.com/page.html引用了https://yourdomain.com/image.jpg,则Refererhttps://example.com/page.html)。
  • 防盗链逻辑:Nginx 通过valid_referers定义 “合法来源”,若请求的Referer不在合法列表中,则判定为盗链,返回 403 Forbidden。

基础配置示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server {
listen 80;
server_name yourdomain.com;
root /var/www;

# 对图片、视频等静态资源启用防盗链
location ~* \.(jpg|jpeg|png|gif|mp4|css|js)$ {
# 定义合法的Referer来源
valid_referers
none # 允许无Referer的请求(如直接在浏览器输入URL访问)
blocked # 允许Referer被防火墙或代理隐藏的请求
server_names # 允许来自本域名的请求(yourdomain.com及其子域名)
*.yourdomain.com # 允许指定域名及其子域名
*.trusted-site.com; # 允许信任的第三方网站

# 若Referer不合法,则返回403
if ($invalid_referer) {
return 403;
# 可选:返回自定义图片(如“盗链必究”提示图)
# rewrite ^/ /forbidden.png last;
}
}
}

valid_referers参数详解

valid_referers用于定义 “合法来源”,支持多种格式:

阅读全文 »

Elasticsearch 事务日志(Translog):数据安全与持久化的核心保障

Elasticsearch 基于 Lucene 构建,而 Lucene 采用 “延迟写” 策略(数据先存内存,再批量刷盘)提升性能,但存在内存数据丢失风险。事务日志(Translog) 作为 Elasticsearch 的核心组件,通过记录所有未持久化的操作,确保在节点故障时数据可恢复,是数据安全的关键保障。

事务日志的核心作用

  1. 数据恢复:记录所有未写入磁盘的索引操作(新增、更新、删除),节点重启后可通过 Translog 恢复内存中丢失的数据。
  2. 持久化辅助:配合 Lucene 的段(Segment)机制,平衡写入性能与数据安全性。
  3. 原子性保障:确保每个操作要么完全成功(写入 Translog 并同步到段),要么失败时可回滚。

数据写入与 Translog 交互流程

数据从写入到持久化的完整流程如下,Translog 贯穿始终:

初始写入:内存缓冲 + Translog 记录

  • 文档写入时,先进入 Memory Buffer(内存缓冲区,JVM 堆内存)
  • 同时,操作被追加到 Translog(磁盘文件),确保即使节点崩溃,操作也不会丢失。
  • 此时状态:数据不可搜索(未进入倒排索引),但已通过 Translog 持久化,安全性得到保障。

准实时可见:Refresh 操作

默认每隔 index.refresh_interval(1 秒)触发 Refresh

阅读全文 »