Javascript 如何为同一域名下的两个不同版本的网站提供服务?

Javascript 如何为同一域名下的两个不同版本的网站提供服务?,javascript,html,reactjs,nginx,architecture,Javascript,Html,Reactjs,Nginx,Architecture,我开始做一个需要重写的项目。所以,与其做一个大爆炸的释放 我们决定使用以下方法 当前应用程序(下面的堆栈详细信息)将在现有域下运行 现有(和新)功能将重新写入新的堆栈(详情如下),并与现有应用程序并行部署(在同一域下) 要求如下: 最终用户始终使用同一个域 迁移到新应用或新功能的任何现有功能都可由同一域下的提供 当前应用程序的堆栈和体系结构是 带有硬编码数据的HTML文件 CSS文件 字体文件 PDF 图像 闪存文件 除其他外 应用程序是静态的。它没有数据库。它调用其他第三方API,

我开始做一个需要重写的项目。所以,与其做一个大爆炸的释放 我们决定使用以下方法

  • 当前应用程序(下面的堆栈详细信息)将在现有域下运行
  • 现有(和新)功能将重新写入新的堆栈(详情如下),并与现有应用程序并行部署(在同一域下)
要求如下:

  • 最终用户始终使用同一个域
  • 迁移到新应用或新功能的任何现有功能都可由同一域下的提供
当前应用程序的堆栈和体系结构是

  • 带有硬编码数据的HTML文件
  • CSS文件
  • 字体文件
  • PDF
  • 图像
  • 闪存文件 除其他外
应用程序是静态的。它没有数据库。它调用其他第三方API,但没有自己的数据库(文件和图像除外)

它位于目录下,通过在专用服务器上运行web服务器(Apache)来提供服务

新重写的堆栈和体系结构将

  • 使用React或Gatsby
  • 生成静态文件的标准生成系统
  • 数据(PDF、图像)托管在其他地方
  • 闪存文件(直到我们找到更好的方法)
考虑到这些需求,我考虑使用某种负载平衡器(如
Nginx
)来提供两个版本的应用程序,并使用代理为URL模式提供服务

比如说

  • 到的请求将转到现有的应用程序部署(假设它未迁移)
  • 到的请求将转到现有的应用程序部署(假定已迁移)
现在,考虑到这种情况,我想问以下问题

  • 这种方法看起来合理吗?有没有更好的方法来处理这种情况
  • 如何实现这种基于反向代理的系统(考虑Nginx)?(或者如果有更好的方法)
我很想听听能帮助我学习和实现这一点的想法和任何资源/书籍/github


提前多谢

我建议创建已迁移到新功能的v2页面。所有指向该页面的链接都应更新为指向v2


如果有人对旧链接添加了书签,那么这些页面可以通过使用JS-window.location(url\u of_target\u page)重定向用户到v2页面

我建议创建已迁移到新功能的v2页面。所有指向该页面的链接都应更新为指向v2


如果有人对旧链接添加了书签,那么这些页面可以通过使用JS-window.location(url\u of_target\u page)重定向用户到v2页面

你的应用程序中是否有后端,或者它是完全静态的?@georg,它是完全静态的。它使用一些外部第三方API,但此应用程序不存在数据库。谢谢你的提问!我会更新上面的详细信息,你希望什么时候知道你看到的图像是新的还是旧的应用程序?nginx什么时候应该代理一个或另一个?好问题,我想我错过了这一部分。这些图像是静态的,因此新应用程序会将它们复制到自己的项目文件夹中,或者从S3(或其变体)为其提供服务。我认为只要它是相同的图像(因为它会被一个旧的应用程序服务),一切似乎都很好!我遗漏了什么吗?假设您在abc.html上有一个旧功能。然后你把它移植到一个新的。我们建议您使用相同的扩展名创建代码,但将其放在不同的url下。就像迁移之后一样。你的代码中的所有链接现在都应该指向v2。你的应用程序中是否有后端,或者它是完全静态的?@georg,它是完全静态的。它使用一些外部第三方API,但此应用程序不存在数据库。谢谢你的提问!我会更新上面的详细信息,你希望什么时候知道你看到的图像是新的还是旧的应用程序?nginx什么时候应该代理一个或另一个?好问题,我想我错过了这一部分。这些图像是静态的,因此新应用程序会将它们复制到自己的项目文件夹中,或者从S3(或其变体)为其提供服务。我认为只要它是相同的图像(因为它会被一个旧的应用程序服务),一切似乎都很好!我遗漏了什么吗?假设您在abc.html上有一个旧功能。然后你把它移植到一个新的。我们建议您使用相同的扩展名创建代码,但将其放在不同的url下。就像迁移之后一样。代码中的所有链接现在都应该指向v2。这个答案不是假设新版本的代码存在于相同的旧代码库中吗?我们仍然需要一个负载平衡器来代理请求,对吗?由于有两个应用程序在同一个域下运行,实际上这种方法更好,因为您不必维护两个代码库。一个代码库将有助于构建过程和部署部分。由于应用程序是相同的,您当前的负载平衡器应该可以正常工作。但我们不想继续在当前的代码库中开发。请阅读问题以了解更多详细信息。答案不是假设新版本的代码存在于相同的旧代码库中吗?我们仍然需要一个负载平衡器来代理请求,对吗?由于有两个应用程序在同一个域下运行,实际上这种方法更好,因为您不必维护两个代码库。一个代码库将有助于构建过程和部署部分。由于应用程序是相同的,您当前的负载平衡器应该可以正常工作。但我们不想继续在当前的代码库中开发。请阅读问题了解更多详情