首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >架构后端和前端解决方案(nodeJS)

架构后端和前端解决方案(nodeJS)
EN

Stack Overflow用户
提问于 2020-09-18 13:33:28
回答 1查看 158关注 0票数 0

我有一个单独的后端运行节点/表示,提供API端点和2个静态(反应)前端。前端与用户交互,并与后端进行通信.

一旦进入生产阶段,我就需要使用https。前端需要他们自己的域名。

我一直在考虑最简单的配置方法,并提出了选项1(见图表)。Node.js API服务器运行在一个VPS上,由于前端是静态站点,因此可以在单独的服务器上加载这些站点(更新--并不是指托管提供商),因此可以获得它们自己的域。作为一种选择,我不确定是否需要将cloudflare添加到前端,以提供一层安全性。这将允许前端有单独的域名.

由于这是一个启动项目,并怀疑大量游客,我想知道上面是否是过度设计和不必要的复杂。

因此,我正在考虑在同一个linux上托管后端api应用程序和两个前端的选项2。由于前端是静态的,所以我将前端添加到node.js的公用文件夹中。这允许我以http://serverIP:8080/siteA的形式访问前端。

由于我想以http://siteA.com的形式访问前端,我假设我需要一个反向代理(nginX) --这些问题可以帮助我在这两个选项之间做出决定:

  1. 对于启动操作和考虑到上面的情况,哪一个选项是最好的?
  2. 我知道node.js需要一个端口号才能工作,对于API我不介意有端口号(因为它不适用于最终用户,即http://10.20.30.40:3000),但是这两个前端需要自己的域名(www.siteA.xomwww.siteB.com),因此我是否需要使用反向代理(nginX),不管它们是否是静态站点?
  3. 我担心有人会攻击API端点(http://10.20.30.40:3000).在这种情况下,选项2确实比1安全吗?我可能会阻止恶意的直接API调用,因为所有站点都托管在同一个VPS上,API可以很容易地被保护,这不会暴露在外部世界?
  4. 我的开发人员曾经告诉我,选项1是最好的,因为nginX增加了不必要的复杂性,但不确定他的意思--所以我很困惑,老实说,我认为他不想把nginX添加到服务器上。

我在看一个高水平的指导让我走上正确的轨道。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-18 20:13:20

正如你所怀疑的,这是不必要的复杂,在某些情况下是不正确的。这里有一个更好的(并广泛应用于整个行业)的设计。我强烈建议放弃整个VM方法,转而使用共享计算单元,除非您正在使用该机器进行其他计算,并以这种方式使用它可以为您的公司节省大量资金。我强烈怀疑情况是否如此。否则,你只会给自己制造麻烦。

  1. 使用Node.js时最常见的错误之一是通过公用文件夹承载静态内容(对于严重的项目)不要使用CDN。你会得到更好的遥测取决于CDN,冗余,更快的交付,等等。如果你没有期望高流量和性能的静态内容在目前并不是非常重要的,你甚至可以选择一个普通的主机服务器。我以前用namecheap和GoDaddy做过这件事。
  2. 使用直接节点-js共享-或专用于您的应用程序的大小托管,并使用CI/CD部署它。您可以使用CNAMEs来映射您想要的应用程序的任何域名(例如:https://something.com),以映射到应用程序的云托管提供商url的域名。我使用了多种工具,Azure,Heroku,Namec堆,主要是Azure DevOps来管理CI/CD管道,尽管Jenkins也非常受欢迎。我推荐Heroku -因为它提供了一个超级容易的设置。
  3. 当在HTTP上设计任何API时,您应该假定将直接调用您的API。关于更多细节,请参见这个答案:如何防止非浏览器客户端向我的服务器发送请求 --我不是建议使用类似CloudFlare的东西,但是您可能考虑过了,首先看看您的流量。当你需要的时候去拿。只要您有正确的身份验证/授权机制,API的安全性就不会在这些平台上成为一个大问题。如果您在其中一个平台上部署它,您也不必处理端口。除非你达到绝对大规模的规模,它肯定会更便宜,以高可靠性的运作方式。
  4. 你不需要再和nginx打交道了。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63956797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档