如何使用 S3 存储桶的 Akamai infront?
How to use Akamai infront of S3 buckets?
我有一个静态网站,目前托管在 apache 服务器中。我有一个 akamai 服务器,它将对我站点的请求路由到这些服务器。我想将我的静态网站移动到 Amazon S3,以避免在我的服务器中托管这些静态文件。
我在亚马逊创建了一个 S3 存储桶,并为其提供了适当的策略。我还为静态网站托管设置了存储桶。它告诉我可以在
访问该站点
我修改了我的 akamai 属性以指向此 url 作为我的源服务器。当我访问我的网站时,出现 Http 504 错误。
我在这里错过了什么?
谢谢
K
S3 buckets don't support HTTPS?
Buckets 支持 HTTPS,但不直接与静态网站托管功能结合使用。
有关 REST 端点和网站托管端点之间功能集差异的讨论,请参阅 S3 开发人员指南中的 Website Endpoints。
请注意,如果您尝试使用浏览器直接连接到您的网站托管端点,您将收到超时错误。
REST 端点 https://your-bucket.s3.amazonaws.com
将用于在存储桶和 CDN 之间提供 HTTPS,只要您的存储桶名称中没有点
或者如果您需要网站托管功能(索引文档和重定向),您可以将 CloudFront 置于 Akamai 和 S3 之间,在 CloudFront 内部的流量在离开 AWS 网络前往 Akamai 的途中加密(它仍然会从 S3 到 CloudFront 是透明的,但这是 AWS 网络上的内部流量)。 CloudFront 自动为其分配给每个分配的 dddexample.cloudfront.net
主机名提供 HTTPS 支持。
我承认,最初将 CloudFront 放在另一个 CDN 后面听起来有点傻,但它确实非常明智 -- CloudFront 的设计部分是为了增强 S3 的功能。 CloudFront还提供了Lambda@Edge,允许在请求处理周期的4个触发点注入逻辑(CloudFront缓存之前和之后,请求期间和响应期间),您可以在其中修改请求和响应headers,生成动态响应,并在需要时发出外部网络请求以实现处理逻辑。
由于您已经在使用 Akamai 作为 CDN,您可以简单地使用他们的 NetStorage 产品线以简化的方式实现这一点。
您需要做的就是将内容从 s3 转移到 Akamai,它会处理其余的事情(托管、分发、扩展、安全、冗余)。
Luna 控制面板上的原点设置可以简单地指向 Netstorage FTP 位置。这还将消除从 Akamai 网络访问 S3 存储桶时出现的网络延迟。
我目前遇到了这个问题,正如 Michael - sqlbot 所提到的那样,将 CloudFront 放在 Akamai 和 S3 Bucket 之间可能是一种解决方法,但这样做是在另一个 CDN 后面使用一个 CDN。我强烈建议您直接在 Akamai 中配置重定向并自定义原始错误时的响应(使用存储桶中的 REST API 端点)。您需要创建三个规则,但首先,根据最后一个规则转到 CDN
> Properties
和 select 您的 属性、Edit New Version
并单击在 Property Configuration Settings
部分的 Add Rule
上。第一条规则将负责将空路径重定向到 index.html
,就像下图一样创建它:
builtin.AK_PATH
是 Akamai 的变量。下一步负责将不同于静态路径(html、ico、json、js、css、jpg、png、gif 等)重定向到 \index.html
:
最后一步负责在 origin 抛出 HTTP 错误代码时自定义错误响应(就像 CloudFront Error Pages)。当来源 returns 404 或 403 HTTP 状态代码时,Akamai 将使用 /index.html
路径调用 Failover Hostname Edge Server
(在 Akamai 网络内部)。当在浏览器中刷新页面以及应用程序具有重定向链接(例如打开新选项卡)时,将触发此设置。在 Property Hostnames
部分,添加一个新的主机名作为 Failover Hostname Edge Server
,该名称应少于 16 个字符,然后向其添加 -a.akamaihd.net
后缀(这是 Akamai 模式).例如:failover-a.akamaihd.net
:
最后,创建一个新的空规则,如下图所示(输入您刚刚在 Alternate Hostname in This Property
部分创建的主机名):
我有一个静态网站,目前托管在 apache 服务器中。我有一个 akamai 服务器,它将对我站点的请求路由到这些服务器。我想将我的静态网站移动到 Amazon S3,以避免在我的服务器中托管这些静态文件。
我在亚马逊创建了一个 S3 存储桶,并为其提供了适当的策略。我还为静态网站托管设置了存储桶。它告诉我可以在
访问该站点我修改了我的 akamai 属性以指向此 url 作为我的源服务器。当我访问我的网站时,出现 Http 504 错误。
我在这里错过了什么?
谢谢 K
S3 buckets don't support HTTPS?
Buckets 支持 HTTPS,但不直接与静态网站托管功能结合使用。
有关 REST 端点和网站托管端点之间功能集差异的讨论,请参阅 S3 开发人员指南中的 Website Endpoints。
请注意,如果您尝试使用浏览器直接连接到您的网站托管端点,您将收到超时错误。
REST 端点 https://your-bucket.s3.amazonaws.com
将用于在存储桶和 CDN 之间提供 HTTPS,只要您的存储桶名称中没有点
或者如果您需要网站托管功能(索引文档和重定向),您可以将 CloudFront 置于 Akamai 和 S3 之间,在 CloudFront 内部的流量在离开 AWS 网络前往 Akamai 的途中加密(它仍然会从 S3 到 CloudFront 是透明的,但这是 AWS 网络上的内部流量)。 CloudFront 自动为其分配给每个分配的 dddexample.cloudfront.net
主机名提供 HTTPS 支持。
我承认,最初将 CloudFront 放在另一个 CDN 后面听起来有点傻,但它确实非常明智 -- CloudFront 的设计部分是为了增强 S3 的功能。 CloudFront还提供了Lambda@Edge,允许在请求处理周期的4个触发点注入逻辑(CloudFront缓存之前和之后,请求期间和响应期间),您可以在其中修改请求和响应headers,生成动态响应,并在需要时发出外部网络请求以实现处理逻辑。
由于您已经在使用 Akamai 作为 CDN,您可以简单地使用他们的 NetStorage 产品线以简化的方式实现这一点。
您需要做的就是将内容从 s3 转移到 Akamai,它会处理其余的事情(托管、分发、扩展、安全、冗余)。
Luna 控制面板上的原点设置可以简单地指向 Netstorage FTP 位置。这还将消除从 Akamai 网络访问 S3 存储桶时出现的网络延迟。
我目前遇到了这个问题,正如 Michael - sqlbot 所提到的那样,将 CloudFront 放在 Akamai 和 S3 Bucket 之间可能是一种解决方法,但这样做是在另一个 CDN 后面使用一个 CDN。我强烈建议您直接在 Akamai 中配置重定向并自定义原始错误时的响应(使用存储桶中的 REST API 端点)。您需要创建三个规则,但首先,根据最后一个规则转到 CDN
> Properties
和 select 您的 属性、Edit New Version
并单击在 Property Configuration Settings
部分的 Add Rule
上。第一条规则将负责将空路径重定向到 index.html
,就像下图一样创建它:
builtin.AK_PATH
是 Akamai 的变量。下一步负责将不同于静态路径(html、ico、json、js、css、jpg、png、gif 等)重定向到 \index.html
:
最后一步负责在 origin 抛出 HTTP 错误代码时自定义错误响应(就像 CloudFront Error Pages)。当来源 returns 404 或 403 HTTP 状态代码时,Akamai 将使用 /index.html
路径调用 Failover Hostname Edge Server
(在 Akamai 网络内部)。当在浏览器中刷新页面以及应用程序具有重定向链接(例如打开新选项卡)时,将触发此设置。在 Property Hostnames
部分,添加一个新的主机名作为 Failover Hostname Edge Server
,该名称应少于 16 个字符,然后向其添加 -a.akamaihd.net
后缀(这是 Akamai 模式).例如:failover-a.akamaihd.net
:
最后,创建一个新的空规则,如下图所示(输入您刚刚在 Alternate Hostname in This Property
部分创建的主机名):