【问题标题】:Best practices for setting up a MERN application on AWS在 AWS 上设置 MERN 应用程序的最佳实践
【发布时间】:2018-12-08 15:12:51
【问题描述】:

我知道这是主观的和固执的,但我只需要从了解最佳实践可能是什么开始。

我有一个 MERN 应用程序在 localhost 上运行,React 脚本当前在端口 3000 上运行,Express.js 应用程序在端口 3001 上运行。

现在我要在 AWS 上实时设置它,我想知道我是否应该像这样创建它:

website.com 用于前端 React 东西,使用 nginx 路由从端口 80 到 3000 的任何内容,同时它调用 api.website.com 在同一实例上运行在 3001 上,website.com 和 `api.website.com 具有相同的 IP地址。

website.com 的一个单独实例在不同的 IP 地址上,api.website.com 的另一个实例在不同的 IP 地址上用于 API 调用?无需指定端口即可访问两者。

我很好奇,因为大多数时候我都使用 API,它们没有单独的端口,只有一个子域,我认为是不同的 IP 地址和不同的实例。

记住我想使用 SSL,最好的设置方法是什么?

【问题讨论】:

  • 当你说“最好的方法”时,你需要改变你的 q 并且更具体。 AWS 解决方案有很多最佳实践:您想要经济高效吗?如果是这样,您的 MERN 堆栈可能会利用 S3,具体取决于您的应用程序正在执行的操作(照片或图像)的性质 ssl 是给定的,但更安全?加密传输中的静态数据?自动缩放? - 你希望它在交通繁忙时嗡嗡作响吗?高度可用?如果一个 AZ 出现中断,您是否需要该应用程序保持正常运行?许多人会认为这个 q 过于宽泛 - 所以请提供更多信息,我们会提供帮助。
  • 其他需要考虑的问题:您的 MERN 应用 - 您是否想尝试一下以测试可行性?或者您是否 100% 确定您现有的架构,并且会在明年或两年内继续使用该架构?这个应用程序是否已经在运行并为用户/客户提供服务?如果是这样,您的流量是什么样的,您当前的服务器是否处于重负载/使用情况下?哪个资源:内存?过程?网络 ?贮存?还添加这些详细信息并提供数字(如果有)。

标签: express nginx amazon-ec2 mern


【解决方案1】:

我会说 Nginx 向世界公开,带有 SSL 证书,所有流量都重定向到端口 443。

绑定到 127.0.0.1 并通过 Nginx 代理的所有其他内容。将 Nginx 设置为在端口 443 上接受对api.website.com 的请求,然后将它们代理到 127.0.0.1:3000 或 3001 或其他任何地方很简单。

然后防火墙所有其他随机端口并通过 Nginx 绝对路由所有传入流量。

【讨论】:

    【解决方案2】:

    不需要通过 SSL 为静态应用程序提供服务,但另一方面,您的服务器应用程序必须受到保护。直接与数据库交互的部分堆栈非常关键,必须针对各种漏洞加以保护。除非您遵循最佳实践来保护您的节点应用程序,否则只有 SSL 不会有任何好处。

    您可以将子域用于节点应用程序,将根域用于实际站点。此外,您可以通过在 nginx 配置文件中定义不同的服务器部分,为网站使用 80 端口,为您的节点应用程序使用 443 端口。

    以下是一些链接,您可以在其中找到在生产中部署节点应用程序时要遵循的最佳实践。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-25
      • 2014-04-18
      • 2014-10-12
      • 1970-01-01
      • 2011-05-17
      • 2015-07-02
      • 1970-01-01
      • 2012-01-14
      相关资源
      最近更新 更多