【问题标题】:Hosting web application on Amazon AWS EC2在 Amazon AWS EC2 上托管 Web 应用程序
【发布时间】:2017-03-22 19:44:43
【问题描述】:

我正在本地开发一个 Web 应用程序。但是,我想在 Amazon EC2 实例上托管最终产品。我已将我的 Web 应用程序移至 EC2 实例并能够运行该应用程序;它现在正在监听 8081 端口。

我不明白的是如何允许 Internet 上的用户访问在 EC2 实例的端口 8081 上运行的 Web 应用程序。我已尝试将域名重定向到 NameCheap DNS(我们在其中购买域)上的 EC2 实例的 IP 地址,但无济于事。我怀疑我需要做的一件事是设置 EC2 权限组的权限,但我应该将其设置为什么?

非常感谢您的帮助! 谢谢!

【问题讨论】:

  • 你的 ec2 实例操作系统是什么?
  • 可以直接从浏览器打IP吗?想知道问题是 DNS 还是 EC2。
  • ec2 实例为:Amazon Linux AMI 2016.09.0 (HVM),SSD 卷类型 - ami-5ec1673e
  • 如果我能从浏览器成功命中 IP,我希望看到什么?肯定不行,我看到 35.163.43.63 页面不工作。 35.163.43.63 没有发送任何数据。
  • 您需要在附加到您的实例的 ec2 安全组上允许 8081 端口。

标签: node.js amazon-web-services amazon-ec2 web-development-server


【解决方案1】:

您可以设置一个nginx 服务器来代理所有到端口 8081 的请求。

在此处阅读更多信息:https://doesnotscale.com/deploying-node-js-with-pm2-and-nginx/

【讨论】:

  • 作为临时解决方案,我已按照该帖子中的建议将端口 8081 重定向到 80。这似乎是最简单的解决方案。将来我会考虑使用 nginx 服务器。
【解决方案2】:

一般来说,对于公共 Web 应用程序,您需要在标准端口(例如 80 或 443)上运行。您可以通过以特权用户身份运行您的节点应用程序来做到这一点(大多数操作系统要求公开 80 或 443),但通常最好在前面有一个 Web 服务器通过流量,将您的节点应用程序视为上游服务器(即使它在本地主机上)。 NGinX 是一个不错的选择。

无论您想在哪个端口上运行它,您都需要为该实例更新您的 EC2 安全策略以允许该端口(80、443、8081 等)上的流量。您还需要确保它公开了一个公共 IP 地址。为它分配一个弹性 IP 并不是一个坏主意,因为您将希望它在实例重新启动时具有相同的地址。

最后,根据您从哪个 AMI 运行,您可能需要检查并配置主机防火墙以允许流量。

【讨论】:

    猜你喜欢
    • 2016-04-14
    • 2010-11-09
    • 2011-11-16
    • 2017-02-14
    • 1970-01-01
    • 2020-08-22
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多