前端静态页面放在oss上cdn上的配置

news/2025/3/6 11:49:46/文章来源:https://www.cnblogs.com/suyj/p/18754674

0. 这次改造的原因

  • 问题1:前端发布的过程中由于使用了单pod,发布完pod在启动的时候服务对外不可用
    image
  • 问题2:如果用滚动更新可能会带来的问题
    发布过程中,机器A发布完了,机器B没有发布完。
    用户访问一个页面,页面请求打在 A上,然后js资源打在B上,B上没有然后就命中了404逻辑返回了首页的内容,导致这个js 一直就被cdn缓存乘html内容了。

1. 改造内容规划

image

  • 说明:
    通过以上可以看出来主要是改三个内容
      1. 发布
    改造前:Git代码提交-》build-》制作镜像-》上传镜像-》 k8s(阿里云的ack)
    改造后:Git代码提交-》上传到OSS(阿里云的oss)
    
      1. 用户访问
    改造前:用户-》域名-》cdn的cname-》回源域名-》源站ingress-》service-》pod
    改造后:用户-》域名-》cdn的cname-》回源域名-》OSS(阿里云的oss)
    
      1. 代理配置
    改造前:nginx通过location的规则 转发到对应的proxy或者静态页面路径
    改造后:cdn(aws的CloudFront)通过行为(Behaviors)中的规则 转发到对应的源(Origins),源指向的是oss的域名
    

2 OSS配置

2.1 oss上的配置

  • 备注:使用的是阿里云的oss

2.2 oss上静态文件的存放

/xxx_static/website/dev/
image
image

2.3 oss域名配置

image

2.4 oss错误页面配置

image

  • 镜像回源什么也不用裴子豪
    image

3 cdn配置

  • Create distribution
    image

3.1 General 配置

image

3.2 security 配置

image

3.3 Origins配置

Origins的配置类似于location中的proxy
Origin domain+Origin path 等于 proxy中的 http://static-web.xxx.ai/xxx_static/website/dev

image
截图中的Origin从上到下分别是:

  1. OSS的外网地址
  2. 跳转的登录页面
  3. 用户访问的内容在cdn上不存在,cdn上需要回源到oss。
    OSS上默认 会 location 到xxx_static/website/dev。所以cdn上访问就会变成 xxx_static/website/dev/xxx_static/website/dev这样,这样访问到oss上就会变成404,做这个配置是为了达到cdn访问不存在的页面的时候跳转到 xxx_static/website/dev,这个配置要和Behaviors的配置结合使用
  4. cdn回源的地址

3.4 Behaviors配置

image

3.5 Error pages配置

image

3.6 Invalidations配置

image

3.7 Tags配置

image

3.8 Logging配置

image

解决问题的思路

  • 正常的技术解决思路
问题1:用滚动更新就可以实现
问题2:加一个就绪探针。前端把所有的需要加载的统一暴露一个接口。然后使用就绪探针监测成功后接受流量
  • 实际的解决思路
    你选择的方案不一定是最好的,那为什么还要用呢。
    技术的选型和问题的解决不能只追求“跟风”或者盲目采用最前沿的技术,而是要结合实际情况,找到最合适的方案。

技术本质上是为业务服务的,选择适合团队、项目需求和现有基础设施的方案,才能真正提高效率、降低成本,而不是为了先进而先进。协同作战、综合考虑团队的能力、业务发展需求和系统稳定性,才是最优解。

有时候,一项技术再先进,但团队无法快速掌握,或者迁移成本过高,都会影响最终的落地效果。所以,技术选型既要有前瞻性,也要考虑现实情况,平衡创新与可执行性。

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

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

相关文章

Nginx 工作机制参数设置(详细讲解说明)

1. Nginx 当中的 master-worker 机制原理 master-worker 工作原理图:一个 master 管理多个 worker[root@localhost ~]# cd /usr/local/nginx/ [root@localhost nginx]# ls auto CHANGES.ru conf contrib html logs man proxy_temp sbin …

无钥匙进入系统和无钥匙启动系统PEPS

经纬恒润的无钥匙进入及启动系统简称 PEPS (Passive Entry Passive Start) 系统,采用 RFID(无线射频识别)技术,实现无需按动遥控器即可进入车内以及一键启动发动机等功能。 经纬恒润的无钥匙进入及启动系统简称 PEPS (Passive Entry Passive Start) 系统,采用 RFID(无…

阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!

3月6日最新消息,阿里云通义千问官方宣布推出最新推理模型 QwQ-32B,这一模型仅有 32B 参数,但在效果上与拥有 671B 参数的 DeepSeek-R1 相媲美。如果你自己部署 DeepSeek-R1 但资源不够的话,又多了一个新的选择。 QwQ-32B 的独特之处不仅在于其参数规模和效果表现,还集成了…

使用 vxe-table 导出 excel,支持带数值、货币、图片等带格式导出,通过官方自动的导出插件 plugin-export-xlsx 实现导出功能

使用 vxe-table 导出 excel,支持带数值、货币、图片等带格式导出,通过官方自动的导出插件 plugin-export-xlsx 实现导出功能 查看官网:https://vxetable.cn gitbub:https://github.com/x-extends/vxe-table gitee:https://gitee.com/x-extends/vxe-table 安装 npm install…

SpringBoot的自动装配原理探析

SpringBoot的意义在于在Spring手动管理bean的基础上,自动的管理。如果说,Spring为手动装配,那么SpringBoot管理bean既可以称之为“自动装配”。 SpringBoot的鼎鼎大名在于其魅力无限的自动装配。

【Windows安全】Windows认证原理入门+实战验证

一、基本原理: Windows密码的路径是: %SystemRoot%\System32\config\sam # 即”SAM路径“当我们登陆系统时,系统会自动地读取SAM文件中的密码与我们输入的密码进行比对,密码会被转换为HTML HASH(NT LAN Manager)进行存储。 Windows本身不存储用户的明文密码,Windows会…

windows系统下部分软件(新版wps,有道云笔记等)字体出现断笔,锯齿感,模糊的解决方式

解决方式会放在文后,直接拖拽到最下方即可 问题描述: 我需要把这个问题描述的详细些,这样你们可以通过更多的关键词找到我这个博客。 这个问题困扰了我好几年,最近因为要使用obsidian,但是发现还是有这个问题,终于下定决心去处理它。 首先这个字体的问题并不是模糊,但很…

安川机器人基板JANCD-XEW01-2维修细节查看

安川机器人基板JANCD-XEW01-2维修细节查看一、常见故障安川机器人基板JANCD-XEW01-2在使用过程中可能出现以下常见故障:| 故障类型 | 具体表现 || 电源故障 | 元件老化、电源电压异常等 || 通信故障 | 线路故障或接口损坏导致与其他部分通信出现问题 || 逻辑运算错误 | 软件缺…

vivo 大规模容器集群运维平台实践

容器平台已经成为支持应用运维和部署的重要基础设施,当前 vivo 内部容器平台共有20+生产集群,管理数万物理机节点,运维管理难度不断增大。为提升运维效率和稳定性,容器团队开发了北斗运维管理平台用于解决大规模集群运维问题。北斗容器运维管理平台包含资源管理,集群扩缩容…

20250306

20号胶 给人以希望

中电金信IDC 发布《中国金融大模型发展白皮书》,解锁可信AI能力基座构建指南

随着DeepSeek的横空出世,大模型技术创新与应用落地快速发展。同时国务院国资委深化部署“AI+”专项行动,这不仅加速了金融行业的智能化进程,更为科技企业带来前所未有的业务创新机遇,开启智能金融新时代。此次基于中电金信在金融科技领域的长期实践积累,同时融合IDC 大模型…

web开发前端传过来的数据与数据库数据不完全相同

在上面这种情况下,可以在后端再创建一个新的实体类对象,例如:在上面的例子中,可以设置一个EmployeeDTO类来存储前端传递过来的数据,然后在后端需要对数据库进行操作时,将EmployeeDTO的数据传递给Employee,然后为Employee的剩余的属性进行赋值(例如上面的status,create…