Amazon web services 在aws中为前端和后端部署使用相同的域名
我正在尝试在aws上部署angular应用程序和nodejs服务器。为了部署angular应用程序,我正在使用Amazon web services 在aws中为前端和后端部署使用相同的域名,amazon-web-services,amazon-s3,amazon-ec2,Amazon Web Services,Amazon S3,Amazon Ec2,我正在尝试在aws上部署angular应用程序和nodejs服务器。为了部署angular应用程序,我正在使用s3bucket并启用静态网站托管。 要部署nodejs,我使用的是ec2我已选择将服务器和角度前端分开。 我想知道外界将如何利用这一点。我已经购买了一个域名,比如www.example.com。我附带了一个s3 bucket,所以在启动www.example.com时,我可以看到我的angular应用程序。但是我还想为我的nodejs服务器使用相同的域,因为我的angular应用程序正
s3
bucket并启用静态网站托管。
要部署nodejs
,我使用的是ec2
我已选择将服务器和角度前端分开。
我想知道外界将如何利用这一点。我已经购买了一个域名,比如www.example.com。我附带了一个s3 bucket,所以在启动www.example.com时,我可以看到我的angular应用程序。但是我还想为我的nodejs服务器使用相同的域,因为我的angular应用程序正在对nodejs服务器进行API调用。我是否需要为我的后端服务器购买其他域?
在本地开发中,我只是在localhost:4200上运行前端,在localhost:3000上运行nodje。但我不确定它在云上会如何工作。这个问题有多种解决方案 您可以让
www.example.com
指向S3存储桶,让api.example.com
指向后端
另一个解决方案是使用和配置多个源:一个用于前端(S3),另一个用于后端(自定义源、API网关或应用程序负载平衡器)。然后您将有一个特定的行为,如
/api/*
为您的后端服务。此解决方案的优点是在前端和后端都有一个CDN,避免了前端的CORS请求(+CloudFront提供了更多功能)。我制作了以下图表,显示了此请求将通过的部分:
正如@jogold所说,关键是CloudFront,它将表现为重定向到前端或后端(相同的发行版、多个来源、多个行为)
记住创建一个新的原点(“原点和原点组”选项卡),但也要创建一个新的行为(“行为”选项卡):使用预期的“路径参数”(您的应用程序也应该将其作为基本路径),并注意“优先级”(默认值必须始终是最后一个)
在我的例子中,后端的“PathParam”值为“/api/*”
您可以使用类似亚马逊的API网关的东西,或者建立一个反向代理,在API和UI服务器之间分割流量,或者您只需要为API获取第二个域(
API.example.com
),然后配置UI与之对话。这是否回答了您的问题@乔,你不买子域。如果您想要子域,例如.com,则需要在DNS配置中创建一个或CNAME记录,以便它将子域解析为不同于apex域的IP或服务。如果您想使用CloudFront或其他AWS服务作为源站,您需要使用AWS Route53 DNS服务。这很好。我能够使用上述解决方案成功地启动它。非常感谢。您好,cloudfront在API前面不是意味着额外的成本吗(对于http/https请求)。如果您在cloudfront中设置自定义错误响应,它也会从您的API中吞下http错误代码。抱歉,这些自定义错误响应无法应用于特定路径。