在不同的服务器或同一台服务器上托管服务器和客户端应用程序?

时间:2020-04-26 14:03:58

标签: node.js reactjs express heroku

我正在做一个学习项目。我已经使用本地和Google策略在nodejs中构建了身份验证系统。前端是一个React应用。托管有两种选择

  1. 在netlify或github页面等静态托管提供程序上部署前端,并将后端节点应用程序部署到heroku。
  2. 使用公共文件夹中的前端代码在heroku上部署后端和前端,并使用express.static('public')

我对这两种方法都感到困惑,无法在互联网上找到答案。如果您可以解释这两种方法的优缺点,以及哪种方法在什么情况下都适用,将大有帮助。也赞赏文章的链接。预先谢谢你。

2 个答案:

答案 0 :(得分:2)

第一种方法

优点:

  • 从其他服务器提供的静态内容具有更大的优化潜力(使用S3 / CloudFront边缘缓存),nginx能够以极快的速度提供静态文件
  • 一台服务器上的网络流量较少(可以同时从多个点提供内容)
  • nodejs应用程序不必浪费时间来提供永不更改的静态文件,因为它有更多时间来获取实际的动态内容

缺点

  • 需要运行更多的配置,因为它运行在不同的来源(应对CORS,适当的安全设置)
  • 过早优化
  • 更多维护

第二种方法

优点:

  • 更易于部署
  • 在大多数情况下足够快

答案 1 :(得分:1)

我可以根据您工作的公司为您提供示例。为了安全和方便起见,我们在不同的服务器上前后分开。我们阻止所有ip向后端发出请求,仅释放前端服务器的ip。我们分别为每台服务器创建特定的规则,如果其中一台服务器由于某种原因停止运行,则不会影响另一台服务器。

但是这个决定很大程度上取决于您开发的应用程序类型以及项目所需的结构。但是请考虑以下因素:安全性,可维护性和便利性。