Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在aws中为前端和后端部署使用相同的域名_Amazon Web Services_Amazon S3_Amazon Ec2 - Fatal编程技术网

Amazon web services 在aws中为前端和后端部署使用相同的域名

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应用程序正

我正在尝试在aws上部署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错误代码。抱歉,这些自定义错误响应无法应用于特定路径。