云服务器与nas实现在冷热资源访问,nginx代理

在实际项目中,我们的文件存储是一个必不可少的环节,本博主了解到现在的存储方案有

  1. 购买纯系统的云服务器,自己安装个mino,再使用nginx代理给web使用
  2. 购买OSS服务,现在有云厂商都有提供,储存价格也挺便宜的,只是访问流量也要收费
  3. 自建服务器,拉个专线(这个需要有公网IP)

本次案例主要介绍的是云服务器+nas结合方案,因为云端储存费用过高,对于一些冷数据,没必要放到云服务器

拓扑结构如下

经常性访问的热数据就放到云服务器中,访问次数少的就放到nas中

在这里会出现在一个问题 ,当数据从热数据转到冷数据时,访问地址会发生变化

访问的地址会从 

http://abe23.com/v1/myresouce/1.jpg ----> http://abe23.com:9060/v1/myresouce/1.jpg

在这里介绍一种办法,访问地址不变,可以自动更换地址

使用ngix代理,当出现404状态码时就把访问转到下一个代理地址

例如

第一种情况

访问 http://abe23.com/v1/myresouce/1.jpg

  1. 云服务器中有就直接返回

第二种情况

访问 http://abe23.com/v1/myresouce/1.jpg

        云服务器中没有,把代理转到frp穿透的地址 http://abe23.com:9060/v1/myresouce/1.jpg

下面给出配置

frp 代理  详细配置可以查看我之前的文章

nginx 配置

server {listen       80;server_name  ****;  #允许跨域请求的域,* 代表所有add_header 'Access-Control-Allow-Origin' *;#允许请求的headeradd_header 'Access-Control-Allow-Headers' *;#允许带上cookie请求add_header 'Access-Control-Allow-Credentials' 'true';#允许请求的方法,比如 GET,POST,PUT,DELETEadd_header 'Access-Control-Allow-Methods' *; location /v1/myresouce/ {# 访问云服务的文件proxy_pass   http://127.0.0.1:9000/bridgefile/;proxy_intercept_errors on;# 没有访问naserror_page 404 = /v2/myresouce$request_uri;}location /v2/myresouce/v1/myresouce/ {proxy_pass   http://127.0.0.1:9062/; } location = /50x.html {root   html;}}server {listen       9062;server_name  127.0.0.1;  location / {# 第1台nas的web访问proxy_pass   http://127.0.0.1:9060/; proxy_intercept_errors on;# 当第一台访问没有时,转到第二台nas访问error_page 404 = /v2/myresouce$request_uri;}location /v2/myresouce/ {# 第2台nas的web访问地proxy_pass   http://127.0.0.1:9061/; } }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/203484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

13款趣味性不错(炫酷)的前端动画特效及源码(预览获取)分享(附源码)

文字激光打印特效 基于canvas实现的动画特效&#xff0c;你既可以设置初始的打印文字也可以在下方输入文字可实现激光字体打印&#xff0c;精简易用。 预览获取 核心代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&q…

生物动力葡萄酒的快速指南

虽然我们大多数人都熟悉有机酿酒和农业&#xff0c;但围绕生物动力学仍有许多困惑和神秘。无论你是否完全陌生&#xff0c;或者你已经听到一些小道消息&#xff0c;我们在这里揭开这种独特的葡萄酒生产方法的神秘面纱。 生物动力葡萄酒就是一个更全面的有机酿酒过程&#xff0c…

Ros智行mini,opencv,Gmapping建图,自主导航auto_slam,人脸识别,语音控制

功能 一、Gmapping建图 二、自主导航 起始点 、终点 三、人脸识别 四、语音控制 完成任务: 机器人先建图 建完图后给出目标点&#xff0c;机器人就可以完成调用自主导航走到目标点&#xff0c;期间会调用激光雷达扫描局部环境来进行自主避障&#xff0c;到达终点后进行语音…

HCIP考试实验

实验更新中&#xff0c;部分配置解析与分析正在完善中........... 实验拓扑图 实验要求 要求 1、该拓扑为公司网络&#xff0c;其中包括公司总部、公司分部以及公司骨干网&#xff0c;不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名&#xff0c;并且区分大小写。 3…

持续集成交付CICD:Jenkins使用GitLab共享库实现自动更新前后端项目质量配置

目录 一、实验 1.Jenkins使用GitLab共享库实现自动更新后端项目质量配置 2.Jenkins使用GitLab共享库实现自动更新前端项目质量配置 二、问题 1.Sonarqube如何添加自定义质量阈 一、实验 1.Jenkins使用GitLab共享库实现自动更新后端项目质量配置 (1)修改GitLab的Sonar.gr…

bert其他内容个人记录

Pre-training a seq2seq model BERT只是一个预训练Encoder&#xff0c;有没有办法预训练Seq2Seq模型的Decoder&#xff1f; 在一个transformer的模型中&#xff0c;将输入的序列损坏&#xff0c;然后Decoder输出句子被破坏前的结果&#xff0c;训练这个模型实际上是预训练一个…

Docker中安装Oracle11g和oracle增删改查

Docker中安装Oracle11g和oracle增删改查 Docker中安装Oracle11g数据库 Docker 安装oralce11g 1.拉取oracle_11g镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g2.创建oracle11g容器 docker run -d -p 1521:1521 --name oracle11g registry.cn-hang…

【LeetCode刷题】-- 79.单词搜索

79.单词搜索 方法&#xff1a;使用回溯 使用dfs函数表示判断以网格的(i.j)位置出发&#xff0c;能否搜索到word(k)&#xff0c;其中word(k)表示字符串word从第k个字符开始的后缀子串&#xff0c;如果能搜索到&#xff0c;返回true,反之返回false 如果board[i][j]≠word[k]&am…

linux的权限管理

在Linux系统中&#xff0c;文件和目录的权限管理是通过用户、组以及其他用户对文件和目录的读&#xff08;r&#xff09;、写&#xff08;w&#xff09;和执行&#xff08;x&#xff09;权限来实现的。以下是有关Linux权限管理的详细解释&#xff1a; 文件和目录权限&#xff1…

Netty线程模型

Netty线程模型 Netty中两个线程池, 分别是BossGroup和WorkGroup, 线程模型如下图所示&#xff1a; 模型解释&#xff1a; Netty 抽象出两组线程池BossGroup和WorkerGroup&#xff0c;BossGroup专门负责接收客户端的连接, WorkerGroup专门负责网络的读写BossGroup和WorkerGr…

vue2 echarts饼状图,柱状图,折线图,简单封装以及使用

vue2 echarts饼状图&#xff0c;柱状图&#xff0c;折线图&#xff0c;简单封装以及使用 1. 直接上代码&#xff08;复制可直接用&#xff0c;请根据自己的文件修改引用地址&#xff0c;图表只是简单封装&#xff0c;可根据自身功能&#xff0c;进行进一步配置。&#xff09; …

【灰度发布】APP如何实现灰度发布

要实现Java后端服务的灰度发布&#xff0c;可以按照以下步骤进行&#xff1a; 1. **版本控制和构建**&#xff1a;使用版本控制系统&#xff08;如Git&#xff09;来管理代码&#xff0c;并确保每个发布版本都有唯一的标识。使用构建工具&#xff08;如Maven或Gradle&#xff…

springcloud多环境部署打包 - maven 篇

背景 在使用 springboot 和sringcloudnacos开发项目过程中&#xff0c;会有多种环境切换&#xff0c;例如开发环境&#xff0c;测试环境&#xff0c;演示环境&#xff0c;生产环境等&#xff0c;我们通过建立多个 yml 文件结合 profiles.active 属性进行环境指定&#xff0c;但…

k8s 安装 Longhorn

Longhorn 的 helm 模板官网地址&#xff1a;Longhorn 加入仓库 helm repo add longhorn https://charts.longhorn.iohelm repo update开始部署 helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace --version 1.5.3检查pod运行状态是…

c语言上机小练(有点难)

1.题目 用指向数组的指针编程实现&#xff1a;输入一个字符串&#xff0c;内有数字和非数字符号&#xff0c;如&#xff1a;a123x456&#xff08;此处一个空格&#xff09;17960?302tab5876。将其中连续的数字作为一个十进制整数&#xff0c;依次存放到一个数组a中。例如&…

2023_Spark_实验二十七:Linux中Crontab(定时任务)命令详解及使用教程

Crontab介绍&#xff1a; Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中&#xff0c;用于设置周期性被执行的指令。该命令从标准输入设备读取指令&#xff0c;并将其存放于“crontab”文件中&#xff0c;以供之后读取和执行。该词来源于希腊语 chronos(χρ…

最小斯坦纳树算法介绍

最小斯坦纳树 介绍解法例题 介绍 现在有一个图&#xff0c;将它们作为全集 G ( V , E ) G(V,E) G(V,E)&#xff0c;我现在有一个这些点的子集 S S S&#xff0c; S S S大概有十几个点&#xff0c;现在想从 G G G中选出一个子图 G ′ ( V ′ , E ′ ) G(V,E) G′(V′,E′)&am…

C#无标题栏窗体拖动方法

在C#中&#xff0c;可以通过以下步骤实现无标题栏窗体拖动功能&#xff1a; 设置窗体的BorderStyle属性为None&#xff0c;这将隐藏窗体的标题栏和边框。 在窗体的MouseDown事件中&#xff0c;记录鼠标按下时的坐标。 在窗体的MouseMove事件中&#xff0c;计算鼠标移动的偏移…

【桑基图】绘制桑基图

绘制桑基图 一、绘制桑基图&#xff08;1&#xff09;方法一&#xff1a;去在线网站直接绘制&#xff08;2&#xff09;方法二&#xff1a;写html之后在vscode上运行 二、遇到的问题&#xff08;1&#xff09;当导入一些excel的时候&#xff0c;无法绘制出桑基图 一、绘制桑基图…

用23种设计模式打造一个cocos creator的游戏框架----(三)外观模式模式

1、模式标准 模式名称&#xff1a;外观模式 模式分类&#xff1a;结构型 模式意图&#xff1a;为一组复杂的子系统提供了一个统一的简单接口。这个统一接口位于所有子系统之上&#xff0c;使用户可以更方便地使用整个系统。 结构图&#xff1a; 适用于&#xff1a; 当你想为…