首页 > 解决方案 > 我想将多层 Web 应用程序部署到 AWS,但不知道如何设置

问题描述

我希望有人能够解释我将如何设置多层 Web 应用程序。有一个数据库层、应用程序层、Web 服务器层,然后是客户端层。我不确定如何将应用层和 Web 服务器层分开,因为应用层将位于私有子网中。我会让客户端将请求直接发送到应用服务器,但私有网络是必需的。将应用服务器与 Web 服务器分开也是一项要求。

我唯一的想法是在 Web 服务器上提供内容,然后客户端将所有请求发送到另一个端口上的同一 Web 服务器。与端口 3000 一样,如果在该端口上捕获了请求,则使用 express 的节点应用程序会将请求转发到应用程序层,因为 Web 服务器可以与应用程序服务器通信。

我确实设置了一个小的概念证明这样做。Web 服务器提供内容,然后我有另一个快速应用程序设置来侦听端口 3000,客户端在端口 3000 上发送请求,然后它只是将完全相同的内容发送回应用程序服务器。

这是我当前的设置,Web 服务器托管两台服务器。一个在端口 80 上为前端服务,一个在端口 3000 上接收请求。侦听端口 3000 的服务器将所有请求转发到应用服务器 ALB(它基本上是应用服务器上所有相同路由的副本,但它只是转发请求而不是执行操作)。但是有没有办法在中间没有这个额外的跳跃?在不暴露内部 ALB 的情况下摆脱正在侦听 3000 的附加服务器?

在此处输入图像描述

标签: amazon-web-servicesexpressweb-applicationsmulti-tier

解决方案


要将 Web 服务器和应用程序服务器分开,您可以使用具有公有子网和私有子网的 VPC。事实上,这是一种常见的场景,亚马逊已经为我们提供了文档。

至于“更好的方法”,我认为您的意思是安全性。以下是一些选项:

  1. 您可以(并且应该)在主机上运行基于主机的防火墙,例如IP 表
  2. AWS 还提供了多种选择。
    1. 您可以使用Security Groups,它们是主机的状态防火墙
    2. 您还可以使用网络访问控制列表 (ACL),这是用于控制进出子网的流量的无状态防火墙。

AWS 还认为,许多商店可以通过使用托管服务来改善他们的安全状况,以便 AWS 处理所有的修补和维护。例如,静态内容可以托管在Amazon S3上,而动态内容则由利用API Gateway的微服务提供。最后,从安全角度来看,AWS 提供了Trusted Advisor等服务,可以帮助您查找和修复常见的安全错误配置。


推荐阅读