如何在端口 80/443 上运行 EC2 的 Web 服务器

如何在端口 80/443 上运行 EC2 的 Web 服务器

我有一个应用程序,可以通过输入http://EC2IP:3838/My_app。但我需要一个域名而不是这个地址,因此从 AWS 购买了一个 DNS 并将其链接到 EC2 IP。现在我可以通过 my-dns-name:3838/My_app 访问应用程序,但域名末尾不常有 3838/My_app。我被指示“如果您希望人们仅使用域名访问您的应用程序,您需要更改应用程序的端口,或者在端口 80/443 上运行可以重定向用户的 Web 服务器”。有人能帮我吗?

这是我目前所做的:为了部署我的 Shiny 应用程序,我在 AWS 中创建了一个 EC2 IP,然后安装了 Shiny 服务器和 Rstudio,以便我可以部署我的应用程序。所以现在我有一个具有以下链接的 IP(我使用的是 MyIP 而不是 IP 号码):

MyIP:3838 打开 shiny 服务器 MyIP:8787 打开 Rstudio MyIP:3838/My_app 打开我的应用程序 然后我从路由 53 创建了一个托管区域,并将我的 EC2 IP 链接到我的域名。

谢谢

答案1

首先,你似乎选择了错误的托管平台。AWS EC2 功能强大且灵活,不适合你试图解决的任务。如果你的任务仅限于托管一个简单的 Web 应用程序,那么你应该使用更简单的平台,例如来自 Hetzner 的网站托管,它包含所有功能,而且价格相当便宜。

如果你仍然想继续使用 AWS,你可以选择:使用 AWS 服务或自己做所有事情。如果你想用 AWS 的方式做,那么你应该创建一个负载均衡器在您的应用程序前面。AWS 将处理所有事情:端口重定向和 SSL 证书(端口 443 需要)。但是,说实话,对于单个 EC2 实例配置来说,负载均衡器有点大材小用。此外,这会花费您额外的钱,因为负载均衡器不是免费的(但 SSL 证书是免费的)。

如果你不想为负载均衡器付费,那么你需要遵循评论中给出的建议——这意味着你必须为其设置 HTTP 代理和 SSL 证书(我建议Letsencrypt)。如果你愿意付费,那么你需要做以下事情:

  1. 亚马逊证书管理器并为您创建的域(您用 替换的域my-dns-name)请求新证书。当您开始执行此操作时,AWS 将为您提供有关如何验证域的详尽说明。
  2. 转到 EC2 -> 负载均衡器并创建一个 Classic Load Balancer。为其创建两个侦听器:一个用于从端口 80 到 3838 的 HTTP,另一个用于从端口 443 到 3838 的 HTTPS。将您之前获得的 SSL 证书附加到第二个侦听器。
  3. 将您的 EC2 实例附加到您创建的负载均衡器。
  4. 转到 Route53,删除指向您的 EC2 实例的记录,并将其替换为CNAME指向负载均衡器的 DNS 名称的记录。或者,您可以创建一个A记录,将其设为别名并将其指向负载均衡器(这更符合 AWS 的方式)。

如果您已正确完成所有操作,那么您的网站应该会在http://my-dns-name/My_app和 之前开放https://my-dns-name/My_app

相关内容