CDN CloudFlare 接入 OCI 对象存储

news2024/9/21 8:02:06

在当今数字化时代,网站性能和可用性是业务成功的关键。为了提供快速且可靠的访问体验,许多组织正在寻找有效的内容分发网络(CDN)解决方案。CloudFlare作为业界领先的CDN提供商,其强大的全球网络基础设施能够加速网站内容传输,降低延迟,提高安全性。与此同时,Oracle Cloud Infrastructure(OCI)的对象存储服务为用户提供了可扩展的、安全的云存储解决方案。

本文将介绍如何将CDN CloudFlare与OCI对象存储集成,以进一步优化网站性能和可用性。我们将讨论集成的步骤,以及这种集成如何帮助您的网站提供更快速、更可靠的内容交付服务。

1 OCI 中创建对象存储

1.1 创建对象存储(示例中为默认配置)

1.2 CDN 接入对象存储访问类型

CDN 厂商接入的两种方式:

  • 在普通访问模式下,OCI 对象存储需要配置为公共访问类型才能被CDN访问,默认创建的对象存储是私有的
  • 在私有模式下,配置 Pre-Authenticated 的访问方式,允许 CDN 接入 OCI 对象存储

修改为公共访问,允许其他CDN厂商链接

2 OCI对象存储上传测试图片

在 对象存储 页面中点击 upload,进行文件的上传

上传文件

3 配置cloudflare 加入 OCI 对象存储

3.1 登录已注册站点

  1. cloudflare增加别名
  2. 配置workers路由规则
  3. 配置缓存规则
  4. 为站点添加路由规则

3.2 配置DNS CNAME 解析到 OCI 对象存储

法兰克福 endpoint : objectstorage.eu-frankfurt-1.oraclecloud.com

其他参考region参考:Oracle Cloud Infrastructure API Reference and Endpoints

3.3 添加 Workers 服务

选用HTTP处理程序

3.4 编写处理请求服务代码

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const url = new URL(request.url)
  // url.host = 'YOUR_OBJECT_STORAGE_BUCKET_ENDPOINT' // OCI 对象存储 endpoint
  url.host = 'objectstorage.eu-frankfurt-1.oraclecloud.com'  // 使用法兰克福节点
  const newRequest = new Request(url, request)
  return fetch(newRequest)
}

3.5 配置站点缓存页面规则

示例中规则是对s3.xxx-xxx.com域名下的所有内容进行缓存

3.6 配置站点的路由规则

配置当前CDN域名 到 指定的路由规则

4 通过CDN域名访问对象存储

格式:
https://<域名>/n/<namespace>/b/<bucket>/o/<文件名>

示例 - 普通模式:
https://s3.xxx-xxx.com/n/<对象存储namespace>/b/bucket-20230418-1654/o/achicken.jpg

示例 - Pre-Authenticated模式:
https://s3.xxx-xxx.com/p/b5B0q4auDc_g8u-Bk9taoLGZox94GsUfAnz-CSe9dCKRxAW8H5IkpRWoDRlSOUze/n/<对象存储namespace>/b/bucket-20230419-1036/o/chicken.jpg

5 通过 CloudFlare worker 替换 content-type 类型

5.1 背景

通过 SDK ( upload_obj ) 上传至对象存储的文件,如果不指定 content-type 默认会被指定为 octet-stream;目前已知此 content-type 类型会导致前端矢量图(.svg后缀)的展示失效,并且 oci 对象存储不支持自适应。

5.2 解决方式

客户目前正在使用cloudFlare进行缓存,通过 CloudFlare worker 实现对 svg 后缀文件的 content-type 进行替换,统一替换为image/svg+xml。

5.3 替换

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  // const response = await fetch(request)

  const url = new URL(request.url)  
  url.host = '<对象存储namespace>.compat.objectstorage.eu-frankfurt-1.oraclecloud.com'
  const newRequest = new Request(url, request)

  // 发起实际请求
  const response = await fetch(newRequest)
  // 获取请求路径
  const path = url.pathname
   // 检查文件后缀是否为 '.svg'
   if (path.endsWith('.svg')) {
    // 修改内容类型为 'image/svg+xml'
    const modifiedHeaders = new Headers(response.headers)
    modifiedHeaders.set('Content-Type', 'image/svg+xml')

    // 返回经过修改的响应
    return new Response(response.body, {
      status: response.status,
      statusText: response.statusText,
      headers: modifiedHeaders
    })
  }
 // 直接返回原始响应
 return response
}

6 参考

Oracle Cloud Infrastructure API Reference and Endpoints

🚀 炸鸡物料库 🚀

🔍 内容定位: IT技术领域,云计算、云原生、DevOps 和 AI 等相关的技术资讯、实践和经验分享。面向开发、系统和云计算,提供实用的技术内容。

🎯 目标受众: 面向开发者、系统管理员和云计算从业者,提供实用的技术内容。

🗓️ 更新频率:每周更新,每次分享都为您带来有价值的技术内容。

🤝 互动与反馈: 鼓励读者留言、评论,有问题随时提问,我们将积极互动并提供帮助。

💌 订阅方式: 扫描二维码或搜索“炸鸡物料库”关注,不错过每一篇精彩内容。

🌐 合作与分享: 如果您有技术分享或合作计划,欢迎联系我们,共同成长!

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

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

相关文章

UE学习笔记--解决滚轮无法放大蓝图、Panel等

我们发现有时候创建蓝图之后&#xff0c;右上角的缩放是1&#xff1a;1 但是有时候我们可能需要放的更大一点。 发现一直用鼠标滚轮像上滚动&#xff0c;都没有效果。 好像最大只能 1&#xff1a;1. 那是因为 UE 做了限制。如果希望继续放大&#xff0c;我们可以按住 Ctrl 再去…

Excel常用公式总结非常实用

16个最实用的Excel万能公式 1、多条件判断 IF(And(条件1,条件2..条件N),条件成立返回值) IF(or(条件1,条件2..条件N),条件成立返回值) 2、多条件查找 Lookup(1,0/((条件1*条件2*...条件N)),返回值区域&#xff09; 3、多条件求和 Sumifs(值区域,判断区域1,条件1,判断区域2,条…

hive报错:FAILED: NullPointerException null

发现问题 起因是我虚拟机的hive不管执行什么命令都报空指针异常的错误 我也在网上找了很多相关问题的资料&#xff0c;发现都不是我这个问题的解决方法&#xff0c;后来在hive官网上与hive 3.1.3版本相匹配的hadoop版本是3.x的版本&#xff0c;而我的hadoop版本还是2.7.2的版本…

opencv VideoCapture

videocapture顾名思义视频捕捉&#xff0c;主要是从视频文件、摄像头或网络摄像头获取视频流数据&#xff0c;并将其作为一系列帧进行处理。 我们这里主要实现了获取项目文件夹下的1.mp4视频文件&#xff0c;然后经过灰度变化、均值滤波、边缘检测然后将视频显示出来 #include…

MySQL的索引和B+tree结构

目录 0.关于索引的常见面试题 1.什么是索引&#xff1f; 索引的优缺点 2.索引的数据结构&#xff0c;为什么InnoDb引擎使用Btree作为索引的数据结构&#xff1f; 分析怎样的索引才是好的 二插搜索树 红黑树 B-Tree BTree 哈希 为什么 InnoDB 存储引擎选择使用 Btree 索…

初学HTMLCSS——盒子模型

盒子模型 盒子&#xff1a;页面中所有的元素&#xff08;标签&#xff09;&#xff0c;都可以看做是一个 盒子&#xff0c;由盒子将页面中的元素包含在一个矩形区域内&#xff0c;通过盒子的视角更方便的进行页面布局盒子模型组成&#xff1a;内容区域&#xff08;content&…

商城系统_大型商城系统源码_免费开源商城_OctShop

随着互联网对各行各业的渗透&#xff0c;以及人们网络购物的习惯已经形成&#xff0c;很多商家或企业都开始搭建与开发自己的商城系统平台。商城系统是一个以互联网技术为基础&#xff0c;依托电子商务的电商系统平台。一般大型的的商城系统都会有前台各种客户端&#xff0c;如…

JVM原理-基础篇

Java虚拟机&#xff08;JVM, Java Virtual Machine&#xff09;是运行Java应用程序的核心组件&#xff0c;它是一个抽象化的计算机系统模型&#xff0c;为Java字节码提供运行环境。JVM的主要功能包括&#xff1a;类加载机制、内存管理、垃圾回收、指令解释与执行、异常处理与安…

2023年世界前沿科技发展态势及2024年趋势展望——综述篇

源自&#xff1a;全球技术地图 “人工智能技术与咨询” 发布 一、2023年前沿科技发展与竞争态势总结 &#xff08;一&#xff09;人工智能引领前沿技术加速进步&#xff0c;产业应用一触即发&#xff0c;技术奇点苗头出现 &#xff08;二&#xff09;科技之变引发战争形态之…

帆软图片设置之一张图片铺满整个屏幕

1、设置PC端自适应属性&#xff0c;字体自适应&#xff0c;双向自适应&#xff1b; 2、单元格属性–>对齐–>高级–>图片布局–>拉伸。

欧拉-黎曼函数的K阶近似(OpenMP实现和MPI实现)

目录 欧拉-黎曼函数的K阶近似&#xff08;OpenMP实现和MPI实现&#xff09;问题描述OpenMP代码实现MPI代码实现 注意事项运行参考资料 欧拉-黎曼函数的K阶近似&#xff08;OpenMP实现和MPI实现&#xff09; 问题描述 OpenMP代码实现 #include <stdio.h> #include <s…

HarmonyOS云端一体化组件之AGC应用管理

&#xff08;可选&#xff09;在AGC控制台创建同包名应用 如创建工程时&#xff0c;发现尚未在AGC控制台创建与工程包名相同的应用&#xff0c;可进行补充创建。 1.点击界面提示内的“AppGallery Connect”&#xff0c;浏览器打开AGC控制台“我的项目”页面。 2.点击选择您希…

工厂模式:没你想像的那么难

工厂模式 工厂模式是一种创建型设计模式&#xff0c;它允许创建对象而无需指定将要创建的对象的具体类。它通过将对象的创建委托给一个单独的方法或类来完成&#xff0c;从而隐藏了对象的实例化逻辑。这样可以提高代码的灵活性&#xff0c;减少了代码中的重复和耦合。 在工厂…

社会底层人民要被人工智能和机器人淘汰了吗?你害怕被AI代替吗?

随着科技的飞速发展&#xff0c;人工智能和机器人技术已经成为我们日常生活中不可或缺的一部分。这些技术的广泛应用引发了一些担忧&#xff0c;其中之一就是社会底层人民是否会被人工智能和机器人所淘汰。然而&#xff0c;这个问题并不是非黑即白的&#xff0c;它需要从多个角…

excel导出标准化

虽然标题叫标准化&#xff0c;只不过是我自己的习惯&#xff0c;当一件事情变得流程标准化之后&#xff0c;开发程序就会飞快&#xff0c;开发评估工作总是 搞个1~2天&#xff0c;实则前端后端一起开发&#xff0c;1个小时就可以搞定。 1 前端 const exportXls async () >…

2024环境工程、能源系统与化学材料国际会议(ICEEESCM 2024)

2024环境工程、能源系统与化学材料国际会议&#xff08;ICEEESCM 2024) 一、【会议简介】 2024环境工程、能源系统与化学材料国际会议&#xff08;ICEEESCM 2024)将于2024年在西安举行。会议将围绕环境工程、能源系统与化学材料等议题展开讨论&#xff0c;旨在为从事环境工程…

省赛模板构建——ADC

一般考试只考一个滑动变阻器&#xff0c;考R37的比较多 打开STM32CubeMX 四步配置 配置PB12对应R38的ADC1_IN11&#xff0c;配置PB15对应R37的ADC2_IN15 把通道11设置为单通道 时钟分频为异步/2(对应ADC的时钟来源)&#xff0c;异步一般都选2 配置最大采样周期为640.5 配置A…

Nacos进阶

目录 Nacos支持三种配置加载方案 Namespace方案 DataID方案 Group方案 同时加载多个配置集 Nacos支持三种配置加载方案 Nacos支持“Namespacegroupdata ID”的配置解决方案。 详情见&#xff1a;Nacos config alibaba/spring-cloud-alibaba Wiki GitHub Namespace方案…

vue实现自定义树形穿梭框功能

需求&#xff1a; 我们在开发过程中&#xff0c;会遇到需要将一个数据选择做成穿梭框&#xff0c;但是要求穿梭框左侧为树形结构、右侧为无层级结构的数据展示&#xff0c;ElementUI自身无法在穿梭框中添加树形结构&#xff0c;网上搜到了大佬封装的插件但是对于右侧的无树形结…

three.js 叉乘判断物体在人前左,前右,后左、后右

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs"></div><div style"padding: 10px;text-align: left;">叉乘判断物体…