【问题标题】:how to implement nginx conf in aws cloudfront?如何在 aws cloudfront 中实现 nginx conf?
【发布时间】:2016-04-05 23:44:10
【问题描述】:

我有一些静态文件,由 nginx 提供。

我有直接的 nginx conf

http//xx.yy.com/style.css => /web/style/xx.css

现在我想使用 AWS Cloudfront 来处理这个静态 css/js 文件。

如何在 Cloudfront 中做到这一点?

最后,我希望能够根据子域动态地将请求定向到不同的文件或文件夹。

例如:

http//xx.yy.com/style.css => /web/style/xx.css

http//zz.yy.com/style.css => /web/style/zz.css

http//xx.yy.com/api.js => /web/api/xx.js

http//zz.yy.com/api.js => /web/api/zz.js

【问题讨论】:

  • 不是关于编程的

标签: amazon-web-services nginx amazon-cloudfront


【解决方案1】:

CloudFront 的“来源”决定主要基于两件事 - URL 和路径。

在单个 CloudFront 分配中,您可以有多个“行为”规则。每个规则都可以有自己的起源,所以你可以说:

For request path: /foo/ Use origin: http://foo.origin.com/

每个发行版可以有多个“备用域名”,但您不能说,在单个发行版中,“对于这个主机名,使用这个来源”,只能基于路径指定.

最后,我希望能够根据子域动态地将请求定向到不同的文件或文件夹。

http//xx.yy.com/style.css => /web/style/xx.css

http//zz.yy.com/style.css => /web/style/zz.css

尽管如此,您确实有一个选择。 CloudFront 可以配置为 whitelist headers,包括 Host 标头。白名单标头用作缓存键变体的一部分。随后,如果您配置:

  • 配置 1 个 Cloudfront 分发
  • 设置 2 个备用域名(xx.yy.com 和 zz.yy.com)
  • 将“主机”列入白名单作为要发送到源的标头
  • 在源端,使用适当的重写配置基于名称的虚拟主机(例如 if xx.yy.com/style.css, then serve xx.css

这应该会导致您所描述的配置有效,尽管在 Nginx 层中涉及的逻辑比可取的要多。

请注意,如果您希望 xx.yy.com 和 zz.yy.com 转到同一目录的不同源(HTTP 服务器),则需要使用不同的 CloudFront 分配。此外,CloudFront 不允许您重写 URL 的文件部分(例如 /foo.css -> origin/bar.css),因此基于特定文件执行此操作会很棘手。

【讨论】:

    猜你喜欢
    • 2013-09-25
    • 2021-06-26
    • 2021-01-22
    • 2017-09-27
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多