Amazon-Ec2

AWS - 將 URL 映射到 API 後端(類似 Apache ProxyPass)

  • September 24, 2015

我有一個使用 Apache 作為前端和 Nodejs 作為後端的 Web 架構。我想將此架構遷移到 AWS。Node.js 將成為 Elastic Beanstalk,而 Apache 將儲存在 Amazon S3 上(它僅儲存靜態文件)。

我使用這些指令將 /api URL 路徑映射到 Apache 的後端:

<Location /api>
   ProxyPass http://localhost:8081/api
</Location>

我想在 AWS 中使用相同的機制。我發現 Amazon S3 無法做到這一點,因為它只是一個儲存服務。

我發現Amazon CloudFront可以使用多個Amazon CloudFront可以是Amazon S3儲存桶或Amazon Elastic Load Balancers. 然後,我將使用Amazon EC2來託管我的 Node.js 應用程序後端Amazon Load Balancer

最終的架構將是

                       - Amazon Elastic Load Balancer -> Amazon EC2
                /api  /
                     /
-->Amazon CloudFront-<
                     \
                else  \
                       - Amazon S3

這種類型的架構是否可行?如果是,這是在 AWS 中實現這種架構的最佳方式嗎?

謝謝大家的回复!

是的…使用 CloudFront。

當然,它的官方目的是作為記憶體 CDN,但它具有根據路徑選擇性地將請求路由到適當的源系統的內置能力。

因此,您將預設路徑配置為 S3,請求將發送到您的儲存桶。在您的 Elastic Beanstalk 部署前配置指向 Elastic Load Balancer 的第二個源。設置路徑模式以/api/*將請求路由到第二個來源。

如果不需要或不需要,可以禁用記憶體行為。

CloudFront 部署稱為“分發”。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web.html

這是“最好”的方法嗎?這取決於您的專業知識和創造力……但如果您希望使用可用的 AWS 組件,那麼是的,這可能就是您要走的路。它是唯一一個通過 http 上的路徑提供基本上免維護的請求路由的組件。(當然,Amazon API 網關也在路徑上路由,但它不適合將 S3 作為“萬用字元”目的地的應用程序。)

引用自:https://serverfault.com/questions/724386