我有一个SPA,它在S3上托管,并通过RESTful API与后端进行通信。
我想要实施的内容类似于Firebase托管一键式回滚功能(请参阅下面的屏幕截图)。
当前的网络请求流程如下图所示
用户向URL发出请求,Nginx从S3获取正确版本的index.html
(从Build V0.3
路径获取正确的文件版本,以防止index.html
CDN缓存。 index.html
内的所有资产也在AWS S3上以绝对CDN路径托管。
S3上的项目结构类似于下图,
我使用一个目录(例如本例中为Build_V0.1
)来实现某种命名空间(所有CSS和JavaScript文件都有版本标签后缀,main.xxxxx.js
)。
我面临的问题是每次我需要部署新的App版本时,必须更新Nginx配置文件才能继续从正确的CDN路径获取最新版本的index.html
(最新的Build_V0.X
)。
例如,每次需要部署新版本时,我都必须将Nginx配置更改为以下内容(我只在此处使用prxoy_pass
作为示例)。
# New path
location / {
proxy_pass http://abc.amazon.aws/Build_V0.3;
}
# Old path
location / {
proxy_pass http://abc.amazon.aws/Build_V0.2;
}
有没有办法在不经常配置Nginx配置文件的情况下实现一键式回滚。 Nginx服务器不由我管理并在Elastic Beanstalk上运行。我想要实现的是使部署像上传一堆静态文件一样简单。
我的一位朋友认为不断更改Nginx配置是危险且不可靠的,我应该考虑采用另一种方式来实现它。