AWS - 將 URL 映射到 API 後端(類似 Apache ProxyPass)
我有一個使用 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 作為“萬用字元”目的地的應用程序。)