kfi*_*124 1 amazon-s3 amazon-cloudfront amazon-ec2 amazon-web-services amazon-route53
我对我的 angularjs2 应用程序所需的设置感到非常困惑。
它只是一个带有 html5 模式网址的 SPA 应用程序,我想要的是:
www.mydomain.com/blabla...
将被重定向到同一个 mydomain 但没有 wwwmydomain.com/anything/including/path/like/this
将提供 s3 (/cloudfront)index.html
mydomain.com/path/or/not/path/file_that_ends_with_any_extesnion_like.js
,请求将从 s3 (/cloudfront) 提供该文件,我也可以设置我的网站,以便所有资产都在资产文件夹中,因此请求mydomain.com/assets/path/blabla.bla
将从 s3 (/cloudfront) 提供静态文件mydomain.com/api/...
将重定向到包含我的 REST API node.js 服务器的 ec2 实例通常我只会在 nginx 和 node.js 中使用 1 个 ec2 实例,try_files
如果它失败,它会提供index.html
文件,如果 url 是/api/..
它,它将请求重定向到位于同一个 ec2 上的 api
该设置的问题在于,如果您有 1 个以上的 ec2 实例,它就不能很好地扩展并且难以维护
我在谷歌上看了很多,但找不到任何关于如何设置类似于我在 AWS 云中描述的内容的指南或博客文章。
提前致谢 :)
对 www.mydomain.com/blabla... 的请求将被重定向到同一个 mydomain 但没有 www
这是通过在 S3 中创建一个名为 的空存储桶www.example.com
,将其配置为将所有请求重定向到不同的主机名 ( example.com
) 并将 DNS 指向它来完成的。
如果您希望它支持 www 端的 https 请求重定向,您可以为 www 主机名创建第二个 CloudFront 分配,指向存储桶的网站终端节点,并将 DNS 指向 CloudFront。
对 mydomain.com/anything/include/path/like/this 的请求将提供 s3 (/cloudfront) index.html
example.com
为静态网站托管配置存储桶(包含您的内容的存储桶,而不是上面讨论的空存储桶),并在存储桶的静态网站托管配置选项中设置索引文档名称 index.html
。如 S3 文档中所述,当为存储桶启用 S3 网站托管功能时,S3 将根据以下规则尽可能自动返回存储桶中适当位置的命名索引页面:
如果请求的路径是/foo/bar/
(带有斜杠),则 S3 查找带有键的对象foo/bar/index.html
并将其返回,浏览器的地址栏保持不变。
如果请求的路径是/foo/bar
(没有尾部斜杠)并且foo/bar/index.html
存在,那么/foo/bar/
在尾部/
出现在浏览器的地址栏中之后,S3 返回重定向到,这会导致上述行为。(这是重定向以添加尾部斜杠是标准的 Web 服务器行为;否则索引页面中的相关链接将指向错误的目录)。
在设置 CloudFront 源时,您无需从 CloudFront 的下拉列表中选择存储桶,而是需要输入存储桶的网站终端节点主机名。否则将不会启用索引文档等网站功能:
重要的
不要从列表中选择您的存储桶名称,例如 example.com.s3.amazonaws.com
http://docs.aws.amazon.com/gettingstarted/latest/swh/getting-started-create-cfdist.html
下一期:
如果太难,对 mydomain.com/path/or/not/path/file_that_ends_with_any_extesnion_like.js 的请求将从 s3 (/cloudfront) 提供该文件我也可以设置我的网站,以便所有资产都在资产文件夹中对 mydomain.com/assets/path/blabla.bla 的请求将提供来自 s3 (/cloudfront) 的静态文件
您可以将 CloudFront 配置为使用缓存行为选择将请求发送到哪个“源”(后端系统),每个缓存行为都匹配一个路径模式。听起来,在这种情况下,您希望默认缓存行为指向存储桶,如果不匹配另一个缓存行为,它将向那里发送所有请求。
最后但并非最不重要的对 mydomain.com/api/... 的请求将重定向到包含我的 REST API node.js 服务器的 ec2 实例
据推测,您并不是真正的意思是“重定向”,而是指对 EC2 实例的“转发”或“代理”(同一件事)请求。
将 EC2 实例声明为您站点的 CloudFront 分配中的另一个源。创建/api/*
使用此源的新缓存行为匹配路径模式,CloudFront 会将这些请求发送到您的 EC2 实例。
确保您在 EC2 上的代码在Cache-Control:
API 响应上返回适当的标头,以便 CloudFront 将它们缓存适当的时间,或者如果您返回Cache-Control: no-cache
.
请注意,在缓存行为路径模式中,缺少前导斜杠是隐式的,因此api/*
等效于/api/*
.
另请注意,CloudFront 有一个名为“原点路径”的设置,这是原点的一个属性,有时人们会将其与“路径模式”混淆,后者是缓存行为的一个属性。将“源路径”留空,因为它与您要发送到特定源的路径无关。
归档时间: |
|
查看次数: |
1488 次 |
最近记录: |