【问题标题】:Hosting server and client app on different server or on same server?在不同服务器或同一服务器上托管服务器和客户端应用程序?
【发布时间】:2020-08-10 00:23:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: node.js reactjs express heroku


    【解决方案1】:

    第一种方法

    优点:

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

    缺点

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

    第二种方法

    优点:

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

    【讨论】:

    • 当我学习 React 和 Express 并使用 firebase 服务(即托管和云功能)部署我的初始项目时,我了解到大多数浏览器,尤其是 chrome 和 safari 的移动版本已停止支持第三方 cookie全部一起。那么未来的应用程序是否能够利用拥有两台不同服务器的优势?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多