通过Cloudfront为EC2托管的网站提供服务

0

【以下的问题经过翻译处理】 大家好,

这是我在这个论坛的第一个问题。希望一切都好。

设置:

我有一个运行Nginx并托管我的网站的EC2实例。获得了一个弹性IP,打开了所有正确的端口。到目前为止,一切都运行正常。

我创建了一个CloudFront分发。它使用我的网站域名作为源。我在分发界面上添加了一个子域,cdn.mydomain.com,作为备用域。我在服务器上创建了Sectigo SSL证书,并在CloudFront界面上为我的分发创建了这些证书。SSL已启用,用于mydomain.com、www.mydomain.com和cdn.mydomain.com。我将cdn.mydomain.com设置为Route 53 DNS中的CloudFront别名记录。它指向CloudFront分发的URL。我等待更改部署后进行测试。我的子域cdn.mydomain.com有效。分发的URL dyzmywebsitejbpe.cloudfront.net 有效。分发正在使用mydomain.com作为源从我的EC2实例获取内容。似乎一切都正常。

冲突:

我希望当最终用户在浏览器中输入mydomain.com时,他们可以通过我的CloudFront分发获取内容,而不是从我的服务器获取内容。为了实现这一目标,我尝试了各种组合。根据我理解的方式,以下内容应该有效。

英勇行动:

我将分发的源从mydomain.com更改为cdn.mydomain.com。然后,我更改了两个DNS记录。首先,cdn.mydomain.com从指向CloudFront URL更改为指向我的EC2 Web服务器的IP。其次,mydomian.com从指向IP更改为指向CloudFront URL。使用分发界面,我从备用域中删除cdn.mydomain,然后添加mydomain.com。基本上,我颠倒了mydomain.com和cdn.mydomain.com扮演的角色。我等待DNS传播和重新部署。

一切都失落了:

在这一点上,什么都不起作用。我收到一个错误。重定向太多。以上所有URL现在都不起作用。

似曾相识:

我又恢复了从前的配置,一切都好。cdn.mydomain和分发的URL似乎通过我的CloudFront分发提供内容。而且mydomain.com正常工作,因为它指向了我的服务器的IP。

一个人必须知道自己的局限性:

我明显错误地理解了需要将分发的源设置为子域,而该子域cdn.mydomain.com应该指向我的Web服务器的IP。我认为Nginx需要知道这个子域,并已将其添加到我的.conf文件中。我假设mydomain.com的DNS应该指向分发的URL。我为涉及的所有三个域在我的服务器上添加了可信源证书,并告诉Nginx它需要了解它们的信息。我通过分发界面的分发备用URL选项卡为我的所有三个域生成了aws的证书。但我只允许一个备用URL,根据我的理解,应该是mydomain.com。

坦白对于解决方案有好处:

我被困在一个循环中。我无法走出来。我漏掉了什么?谢谢任何帮助!

John Ullom

profile picture
专家
已提问 5 个月前12 查看次数
1 回答
0

【以下的回答经过翻译处理】 1、在ACM中创建一个证书,基本上是为*mydomain.com创建的通配符证书。 2、在分发中,将“备用域名”设置为mydomain.com和www.mydomain.com。 3、使用ACM中的证书。 4、创建两个行为,一个用于静态内容,一个用于动态内容。对于每个行为,你将有不同的缓存策略。 5、在Route 53中,将mydomain.com和www.mydomain.com都指向CloudFront分发的别名。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则