如何在同一网域下投放2个不同版本的网站?

时间:2019-08-09 14:41:38

标签: javascript html reactjs nginx architecture

我已经开始研究需要重写的项目。因此,与其做个大爆炸,不如做个大爆炸。 我们决定使用Strangler Pattern,这意味着以下

  • 当前应用程序(下面的堆栈详细信息)将在现有域https://app.com下按原样运行
  • 现有(和新的)功能将被重写到新的堆栈中(详细信息如下),并与现有应用程序并行部署(在同一域https://app.com下)

要求是

  • 最终用户始终使用相同的域https://app.com
  • 任何现有功能都已迁移到新应用,或者同一域https://app.com下的新功能都可用

当前应用程序的堆栈和体系结构为

  • 带有硬编码数据的HTML文件
  • CSS文件
  • 字体文件
  • PDFs
  • 图片
  • 闪存文件 除其他事项外。

您的应用程序是静态的。它没有数据库。它调用其他第三方API,但没有自己的数据库(文件和图像除外)

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

新重写的堆栈和体系结构

  • 使用React或Gatsby
  • 生成静态文件的标准构建系统
  • 数据(PDF,图像)托管在其他地方
  • Flash文件(直到我们找到更好的方法)

鉴于这些要求,我想到了使用某种类型的负载均衡器(例如Nginx)来拥有2个版本的应用,并使用代理来提供URL模式。

例如

现在,考虑到这种情况,我想问以下问题

  • 这种方法看起来理智吗?有没有更好的方法来处理这种情况?
  • 如何实现这种基于反向代理的系统(考虑Nginx)? (或者如果有更好的方法)

我很想听听想法和任何可以帮助我学习和实现这一点的资源/书籍/ github。

非常感谢!

1 个答案:

答案 0 :(得分:0)

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

如果有人对旧链接添加了书签,则这些页面可以通过使用JS-window.location(url_of_target_page);来简单地将用户重定向到v2。