ASP.NET 4.5具有很好的新捆绑功能,似乎对CDN的使用有一些支持.Microsoft提供的使用CDN捆绑功能的示例就是这样
public static void RegisterBundles(BundleCollection bundles)
{
//bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
// "~/Scripts/jquery-{version}.js"));
bundles.UseCdn = true; //enable CDN support
//add link to jquery on the CDN
var jqueryCdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js";
bundles.Add(new ScriptBundle("~/bundles/jquery",
jqueryCdnPath).Include(
"~/Scripts/jquery-{version}.js"));
// Code removed for clarity.
}
Run Code Online (Sandbox Code Playgroud)
这似乎暗示您需要明确告诉它CDN上文件的路径.
CloudFront CDN(我假设许多其他人)为您提供了一个镜像您自己的子域.什么时候你打http://uniquesubdomain.cloudfront.net/js/myfile.js?v=1
它起来http://mydomain.com/js/myfile.js?v=1
这样,您可以简单地为所有链接添加前缀,http://uniquesubdomain.cloudfront.net/
并且您的文件是来自CloudFront的服务器.
ASP.NET 4.5捆绑功能是否与此类CDN兼容?是否有一种内置方法可以将捆绑功能的所有链接作为CDN域的前缀?
例如.
bundles.UseCdn = true;
var myBundle= new ScriptBundle("~/bundles/js", "https://uniquedomain.cloudfront.net/");
myBundle.Include("~/js/file1.js");
myBundle.Include("~/js/file2.js");
Run Code Online (Sandbox Code Playgroud)
会导致
<script src="https://uniquedomain.cloudfront.net/bundles/js?v=6y-qVPSK3RYOYHfPhOBDd92H4LjEjs-D3Hh2Yml6CXA1"></script>
Run Code Online (Sandbox Code Playgroud) API网关(APIG),虽然它使用CloudFront(CF),但它不支持CDN边缘缓存.当我配置CF分发以使用APIG作为自定义源时,我收到权限被拒绝错误.
如何配置CF来解决这个问题?
简短版本:如何"按需"制作签名URL,以使用Python模拟Nginx的X-Accel-Redirect行为(即保护下载)与Amazon CloudFront/S3.
我有一个Django服务器,并运行Nginx前端.我一直受到了对它的请求的打击,最近不得不将其安装为Tornado WSGI应用程序,以防止它在FastCGI模式下崩溃.
现在我遇到了一个问题,我的服务器陷入困境(因为它的大部分带宽正在用完),因为有太多的媒体请求,我一直在寻找CDN,我相信Amazon CloudFront/S3对我来说是合适的解决方案.
我一直在使用Nginx的X-Accel-Redirect标头来保护文件免受未经授权的下载,但我没有使用CloudFront/S3的能力 - 但是它们确实提供了签名的URL.到目前为止,我不是Python专家,并且肯定不知道如何正确创建签名URL,所以我希望有人可以获得如何"按需"制作这些URL的链接,或者愿意解释如何在这里,我们将不胜感激.
而且,这是正确的解决方案吗?我不太熟悉CDN,是否有更适合这种情况的CDN?
我在2个网站上有2个不同的图像:
如果我有2个起源创建一个Amazon的Cloudfront分布:www.siteA.com
和www.siteB.com
,然后我呼吁uniqueDistributionID.cloudfront.net/avatar.png
,然后avatar.png
将被退回?中的一个siteA
还是一个siteB
?
为什么不呢?
试图了解Cloudfront发行版中冲突的可能性.
conflict cdn content-delivery-network name-conflict amazon-cloudfront
我正在尝试使用AWS S3和CloudFront来处理我正在开发的Web应用程序.
在应用程序中,我让用户将文件上传到S3存储桶(使用AWS SDK)并通过CloudFront CDN使其可用,但问题是即使在S3存储桶中上传和准备文件大约需要一分钟或2在CloudFront CDN网址中可用,这是正常的吗?
我在S3中托管一个静态网站,并使用Cloudfront缓存文件.我基本上有3个文件,包含以下标题:
我的html文件使用查询字符串参数,每次更新我的css或js文件时都会更新.我已经配置了s3来传递这些参数,并且我已经验证它可以使缓存的资源无效.我的index.html文件看起来像这样:
<html>
<head>
...
<link rel="stylesheet" href="app.css?v=14113e2c764">
</head>
<body>
...
<script src="app.js?v=14113e2c764"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
它似乎工作得很好,因为我整天推送更新,但是当我第二天早上来并推动我的下一个更改时,index.html文件已过期.它没有正确的?v =参数,而是旧的!解决它的唯一方法是手动使html文件无效.然后一切都适用于其余的一天.第二天我又遇到了同样的问题.
这里发生了什么?
我们当前的网站计划是使用亚马逊的Cloudfront服务作为资产文件(如CSS,JavaScript和图像)以及任何其他静态文件的CDN.
我们目前在S3中有一个包含所有这些静态文件的存储桶.这些文件根据它们分为不同的文件夹,"脚本"是JS文件,"图像"是图像等yadda yadda yadda.
因此,我从一开始就没有意识到,一旦您将一个Bucket从S3部署到Cloudfront Distribution,那么对该存储桶的每个后续更新都不会再次部署到同一个Distribution.因此,每次进行静态文件更新时,您似乎都必须将存储桶重新部署到另一个Cloudfront实例.
这对于图像来说很好,因为我们可以轻松确保如果图像发生了变化,那么我们只需创建一个新图像.但是,对于CSS和JS来说,这很难做到.
所以,这让我想到了最佳实践问题:
我正在尝试设置CloudFront
为我的S3
存储桶中托管的静态文件.我有设置分发,但我AccessDenied
在尝试浏览/CSS/stlyle.css
S3存储桶中的CSS()文件时得到:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>E193C9CDF4319589</RequestId>
<HostId>
xbU85maj87/jukYihXnADjXoa4j2AMLFx7t08vtWZ9SRVmU1Ijq6ry2RDAh4G1IGPIeZG9IbFZg=
</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)
我已将我的CloudFront分配设置为我的S3存储桶并创建了新的Origin Access Identity policy
自动添加到S3存储桶:
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E21XQ8NAGWMBQQ"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::myhost.com.cdn/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我希望通过CloudFront提供此S3存储桶中的所有文件...
*更新*
这个云前端指南说:
默认情况下,您的Amazon S3存储桶及其中的所有对象都是私有的 - 只有创建存储桶的AWS账户才有权读取或写入其中的对象.如果要允许任何人使用CloudFront URL访问Amazon S3存储桶中的对象,则必须授予对象的公共读取权限.(这是使用CloudFront和Amazon S3时最常见的错误之一.您必须明确授予Amazon S3存储桶中每个对象的权限.)
所以基于此我已经为S3 bucket中的所有对象添加了新的权限Everyone Read/Download
.现在我可以访问文件了.
但现在当我访问这样的文件https://d3u61axijg36on.cloudfront.net/css/style.css
被重定向到S3 URI和HTTP
.如何禁用此功能?
我试图使整个静态网站无效.以下命令似乎没有失效,/index.html
并给出了一个奇数输出的项目,如下所示.这个AWS CLI行为是正常还是我遗漏了什么?谢谢!
aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths /*
Run Code Online (Sandbox Code Playgroud)
输出:
/index.html
command-line-interface amazon-web-services amazon-cloudfront
我有一个支持SSL的域名(example.com).尝试从www.example.com
- > 重定向请求时遇到问题https://example.com
.
我在尝试访问www.example.com时遇到的错误是:
请求无法满足.
错误的请求.
这些URL有效(重定向到https://example.com
)
example.com
http://example.com
https://example.com
http://www.example.com
表明该网站不安全,这意味着它不使用该证书.
S3
我创建了2个S3 buckets example.com和www.example.com(分别为A和B).Bucket A的静态网站托管使网站托管指向example.com.Bucket B的Static Website Hosting已将所有请求重定向到example.com.
CloudFront的
我有一个包含2个备用域名(CNAME),example.com和www.example.com的发行版.我也有这个dist的SSL证书.
53号公路
我有一个带有2个A类别名的托管区域,example.com和www.example.com都指向Cloudfront的发行版(XX.cloudfront.net)