我正在尝试在AWS上部署我的angular应用程序和nodejs服务器。要部署有角度的应用程序,我正在使用s3
存储桶并启用静态网站托管。
要部署nodejs
,我正在使用ec2
。 我选择将服务器和前端前端分开。
我想知道如何将其提供给外界。我已经购买了一个域名,例如www.example.com。我附加了s3存储桶,因此启动www.example.com时,便可以看到我的角度应用程序。但是我也想为我的nodejs服务器使用相同的域,因为我的角度应用程序正在对nodejs服务器进行API调用。我需要为后端服务器购买其他域吗? 在本地开发中,我只是在localhost:4200上运行前端,而在localhost:3000上运行nodje。但是我不确定它如何在云上工作。
答案 0 :(得分:3)
我制作了下图,显示了该请求将流经的片段:
正如@jogold所说,关键是CloudFront,它将表现为重定向到FrontEnd或BackEnd(相同的分布,多个来源,多种行为)
记住创建一个新的原点(“ Origins and Origin Groups”选项卡),但还要创建一个新的行为(“ Behaviors”选项卡):使用预期的“ Path Param”(您的应用程序也应将此作为BasePath)并注意“优先级”(默认值必须始终是最后一个)。
就我而言,后端的“ PathParam”值为“ / api / *”
答案 1 :(得分:1)
对此问题有多种解决方案。
您可能有www.example.com
指向S3存储桶,而api.example.com
则指向后端。
另一种解决方案是使用CloudFront并将其配置为多个来源:一个用于您的前端(S3),一个用于您的后端(自定义来源,API网关或应用程序负载平衡器)。然后,您将有一种特定的行为,例如/api/*
为您的后端服务。该解决方案的优势在于,在您的前端和后端都有CDN,并且避免了前端的CORS请求(以及CloudFront提供的更多功能)。