Nginx 实现带认证的文件服务器缓存
实现思路
  1. Nginx配置为COS代理:设置Nginx作为反向代理,转发请求至COS服务器。
  2. 认证集成:在Nginx访问流程中嵌入认证环节,通过调用认证服务API,根据返回的HTTP状态码(如401代表未授权,200表示授权通过)来决定是否继续处理请求。
  3. 缓存策略定制:针对性地为图片和视频资源启用缓存,确保高频访问的内容得到高效复用。

实现细节
  • 代理配置:配置Nginx代理指向COS服务URL,实现请求转发。
location ^~ /cosFile/{ #代理配置参数 proxy_connect_timeout 180; proxy_send_timeout 180; proxy_read_timeout 180; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarder-For $remote_addr; proxy_pass http://cos.xxxxx/12321xxx:csfile/; }
  • 认证配置:通过Nginx的auth_request模块,实现对每个请求的前置认证检查。
#文件服务器代理缓存处理 location ^~ /cosFile/{ auth_request /valiauth; error_page 401 = @error401; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 4 128k; proxy_pass http://cos.xxxxx/12321xxx:csfile/; } #文件服务器代理缓存后端认证地址 location /valiauth { internal; proxy_pass http://gateway/auth/checkAuth; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; } location @error401 { return 401 "Unauthorized"; }
  • 缓存配置:利用Nginx的proxy_cache指令,为符合条件的静态资源设定缓存规则。
http{ #省略部分内容 #在 http 节点下 定义缓存路径及参数 proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=my_cache:50m max_size=4g inactive=10m use_temp_path=off; server{ #省略部分内容 #文件服务器代理缓存处理 location ^~ /cosFile/{ auth_request /valiauth; error_page 401 = @error401; add_header Cache-Control public; # 禁止目录浏览 autoindex off; # 2、开启缓存功能 proxy_cache my_cache; # 缓存配置 proxy_cache_key "$uri"; proxy_cache_min_uses 1; proxy_cache_methods HEAD GET; proxy_cache_valid 200 5m; add_header Nginx-Cache "$upstream_cache_status"; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 4 128k; proxy_pass http://cos.xxxxx/12321xxx:csfile/; } } }
  • 图片和视频缓存配置:通过判断请求路径$request_uri的文件后缀决定返回变量$cache_control_policy为 0 或者 1,通过对proxy_cache_bypass 和 proxy_no_cache设置变量$cache_control_policy来决定是否需要绕过缓存,1 代表绕过,0 代表不绕过
http{ #省略部分内容 #在 http 节点下 定义缓存路径及参数 proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=my_cache:50m max_size=4g inactive=10m use_temp_path=off; # 增加媒体判断 map $request_uri $cache_control_policy { ~*\.(jpg|jpeg|png|gif|bmp|tiff?|webp|svg|ico)$ 0; # 图片文件 ~*\.(mp4|webm|avi|mov|flv|wmv|mpeg|mkv|ogv)$ 0; # 视频文件 default 1; # 其他请求则缓存 } server{ #省略部分内容 #文件服务器代理缓存处理 location ^~ /cosFile/{ #设置认证路径 auth_request /valiauth; #设置401错误返回路径 error_page 401 = @error401; #增加客户端缓存头信息 add_header Cache-Control public; # 禁止目录浏览 autoindex off; #开启缓存功能 proxy_cache my_cache; proxy_cache_bypass $cache_control_policy; proxy_no_cache $cache_control_policy; #缓存的 key 使用请求地址 proxy_cache_key "$uri"; proxy_cache_min_uses 1; proxy_cache_methods HEAD GET; #状态为为 200 的文件 缓存48 个小时 proxy_cache_valid 200 2880m; #将缓存状态添加到响应头 add_header Nginx-Cache "$upstream_cache_status"; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 4 128k; proxy_pass http://cos.xxxxx/12321xxx:csfile/; } } }
  • 最终生产配置示例:
http{ #省略部分内容 #在 http 节点下 定义缓存路径及参数 # 定义缓存路径及参数 proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=my_cache:500m max_size=300g inactive=30d use_temp_path=off; # 增加媒体判断 map $request_uri $cache_control_policy { ~*\.(jpg|jpeg|png|gif|bmp|tiff?|webp|svg|ico)$ 0; # 图片文件 ~*\.(mp4|webm|avi|mov|flv|wmv|mpeg|mkv|ogv)$ 0; # 视频文件 default 1; # 其他请求则缓存 } server{ #省略部分内容 #文件服务器代理缓存处理 location ^~ /cosFile/{ #后端认证路径 auth_request /valiauth; #认证不通过返回的路径 error_page 401 = @error401; #增加缓存 add_header Cache-Control public; # 禁止目录浏览 autoindex off; # 缓存功能是否启用的配置 proxy_cache my_cache; proxy_cache_bypass $cache_control_policy; proxy_no_cache $cache_control_policy; # 缓存配置 proxy_cache_key "$uri"; proxy_cache_min_uses 1; proxy_cache_methods HEAD GET; proxy_cache_valid 200 5m; add_header Nginx-Cache "$upstream_cache_status"; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 4 128k; proxy_pass http://cos.xxxxx/12321xxx:csfile/; } #文件服务器代理缓存后端认证地址 location /valiauth { internal; proxy_pass http://gateway/auth/checkAuth; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; } #401错误返回的内容 location @error401 { return 401 "Unauthorized"; } } }

相关新闻

如何5分钟装好FormFilla:求职申请表自动填充新手完整入门指南

如何5分钟装好FormFilla:求职申请表自动填充新手完整入门指南

【免费下载链接】FormFilla About A local-first browser extension that fills job-application forms from local JSON profile data and files. Matches are computed deterministically via multi-signal scoring, structural repeated-block detection, and bipartite opt…

2026/10/20 10:27:08 阅读更多 →
MAC-Java8-map转list

MAC-Java8-map转list

在Java 8中,可以使用Stream API非常方便地将Map转换为List。这里有几个常见的场景,包括将 Map的键、值或键值对转换为List。 ### 1. 将Map的所有键转换为List import java.util.*;public class MapToListExample {public static void main(String[] args) {Map<Strin…

2026/10/20 10:27:08 阅读更多 →
Python基础教程第三版PDF+源码:一周高效吃透实战指南

Python基础教程第三版PDF+源码:一周高效吃透实战指南

简介&#xff1a;《Python基础教程&#xff08;第3版&#xff09;》高清PDF加完整配套源码包&#xff0c;适合Python零基础入门者或希望系统梳理基础语法、序列、字符串等核心知识的初学者。PDF带完整目录&#xff0c;查询方便&#xff0c;并配有大量可运行示例。压缩包共108个…

2026/10/20 10:27:08 阅读更多 →

最新新闻

蒙特卡洛法在电力系统状态估计与风险评估中的MATLAB实现

蒙特卡洛法在电力系统状态估计与风险评估中的MATLAB实现

简介&#xff1a;已有307人学习的这份Matlab资源&#xff0c;聚焦蒙特卡洛法在电力系统状态估计与风险评估中的应用&#xff0c;适合电力系统研究人员、运行工程师及电气专业高年级学生使用。资源从建模出发&#xff0c;覆盖节点电压、线路潮流等状态量的最可能估计&#xff0c…

2026/10/20 11:08:03 阅读更多 →
KernelSU meta-overlayfs 元模块快速安装与验收清单:让模块覆盖 system 真正生效

KernelSU meta-overlayfs 元模块快速安装与验收清单:让模块覆盖 system 真正生效

KernelSU meta-overlayfs 元模块快速安装与验收清单&#xff1a;让模块覆盖 system 真正生效 【免费下载链接】KernelSU A Kernel based root solution for Android 项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU 给 KernelSU 装上元模块&#xff08;负责…

2026/10/20 11:08:03 阅读更多 →
Bonsai-demo:llama.cpp 定制 fork 跑 2-bit 三值 27B 推理的完整解析

Bonsai-demo:llama.cpp 定制 fork 跑 2-bit 三值 27B 推理的完整解析

Bonsai-demo&#xff1a;llama.cpp 定制 fork 跑 2-bit 三值 27B 推理的完整解析 【免费下载链接】Bonsai-demo Bonsai Demo 项目地址: https://gitcode.com/GitHub_Trending/bo/Bonsai-demo Bonsai-demo 是一套让 Bonsai 2 27B 这类 2-bit 级三值量化模型在本地机器上高…

2026/10/20 11:08:03 阅读更多 →
极化码MATLAB仿真:编码、SC译码与误码率统计实战

极化码MATLAB仿真:编码、SC译码与误码率统计实战

简介&#xff1a;PCode.zip 是一份面向通信工程学习者与科研人员的极化码 MATLAB 仿真源码包&#xff0c;聚焦 Erdal Arikan 提出的极化码编解码原理与性能验证&#xff0c;适合具备一定 MATLAB 与信道编码基础、希望深入理解 5G 极化码实现细节的读者。压缩包共 32 个文件&…

2026/10/20 11:08:03 阅读更多 →
用Python搞定库存管理:ABC分类、安全库存、预警系统一站式实现

用Python搞定库存管理:ABC分类、安全库存、预警系统一站式实现

做电商或零售的朋友应该都经历过这种场景&#xff1a;仓库里堆了几百个SKU&#xff0c;哪些该多备货、哪些该清仓、什么时候该补货&#xff0c;全靠拍脑袋。月底一盘点&#xff0c;有的货积压半年卖不动&#xff0c;有的爆款三天就断货。这篇文章不讲大道理&#xff0c;直接用P…

2026/10/20 11:08:03 阅读更多 →
REA 逆向工程工具:1 行命令接入 AI,看懂任意 App 的底层实现

REA 逆向工程工具:1 行命令接入 AI,看懂任意 App 的底层实现

REA 逆向工程工具&#xff1a;1 行命令接入 AI&#xff0c;看懂任意 App 的底层实现 【免费下载链接】rea Reverse engineer anything with agents, from app behavior down to native binaries. 项目地址: https://gitcode.com/GitHub_Trending/rea2/rea 想在自家产品里…

2026/10/20 11:07:02 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →