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



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

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

我对这两种方法都感到困惑,在互联网上找不到答案。如果你能解释这两种方法的优缺点,以及哪种方法适合在什么条件下,那将是非常有帮助的。文章链接也很感激。提前谢谢。

第一种方法

优点:

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

缺点

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

第二种方法

优点:

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

我可以根据我工作的公司给你举一个例子。为了安全和方便,我们在不同的服务器上前后分开。我们阻止所有ip向后端发出请求,只释放前端服务器的ip。我们分别为每台服务器创建特定的规则,如果其中一台服务器因任何原因停止,它不会影响另一台服务器。

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

相关内容

最新更新