【问题标题】:Serve static files from cloudfront CDN with nginx使用 nginx 从云端 CDN 提供静态文件
【发布时间】:2017-10-18 03:30:42
【问题描述】:

我为我的网站设置了一个带有亚马逊云端的 CDN。我现在在我的 CDN 上有文件,与我的网站中的文件夹位置相同。

我尝试使用插件为我的网站设置 cdn,但没有按预期工作。

所以现在我正在尝试设置 nginx 以从我的 CDN(外部 URL)中提供文件。我已经看过几篇关于此的帖子,但没有一篇对我有用。

这就是我目前所做的

location ~* \.(gif|png|jpg|svg|woff|js|css)$ {

             rewrite ^ https://mycdnurl.net$request_uri permanent;
             proxy_pass https://mycdnurl.net;

       }

两者都不起作用。

简单的帮助

https://mywesite.com/images/abcd.jpg 应该变成https://mycdnurl.net/images/abcd.jpg

并且文件的路径可以是任何东西,并且不是恒定的。

非常感谢任何帮助。在此先感谢

【问题讨论】:

    标签: nginx url-rewriting url-redirection cdn amazon-cloudfront


    【解决方案1】:

    我不明白第二个块。第一个块包含两个相互冲突的指令。如果你想重定向到你的 CDN,你应该使用:

    location ~* \.(gif|png|jpg|svg|woff|js|css)$ {
        return 301 https://mycdnurl.net$request_uri;
    }
    

    这只是您的rewrite ^ https://mycdnurl.net$request_uri permanent; 语句的简化版本。请参阅this document 了解更多信息。

    如果这不起作用,您需要使用问题的更多详细信息更新您的问题。

    感谢 Michael 指出上述方案仅在 CloudFront 不使用此服务器和相同 URI 来获取其权威副本时才有效。

    【讨论】:

    • 此服务器正在处理对mycdnurl.net 的请求,或者mycdnurl.net 正在重定向回此服务器。您可以查看 HTTP 标头并确定循环的原因。
    • 是的,来自 cdn 的请求正在重定向回网站 url
    • @RichardSmith 我会说你在没有(我怀疑)一条关键信息的情况下尝试回答这个问题的表现非常出色...... CloudFront 不托管内容。 OP 说这些文件“在”CDN 上,这是不可能的——CloudFront 是一个缓存、直通式 CDN。如果它是针对尚未缓存的文件的每个请求,它将代理每个请求在某个地方具有权威性,因此它可以缓存内容以备下次使用。在其他服务或系统(例如 S3)或应用服务器本身中必须有内容的权威来源,在这种情况下,需要重定向仅直接请求。
    • ...据我们所知,该服务器正在尝试将请求代理到 CloudFront,而 CloudFront 已经在尝试将请求代理回此处。
    猜你喜欢
    • 2012-12-08
    • 2018-05-17
    • 2019-07-01
    • 2011-10-04
    • 2012-11-20
    • 2013-06-27
    • 2014-01-12
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多