1

我有一个为我们的静态内容提供服务的 CDN。来自因特纳普。

为了使我的 html 中的 CDN url 更可口,我的 DNS 设置中有一个“CNAME”条目:

cache.mysite.com => CNAME 指向 Internap

Internap 服务器是一个源拉服务器。所以我的域有一个指向 CDN 的“/public_html/cache”文件夹。

我放在这里的一些文件我只想从我自己的域中提供服务。

同样重要的是我的网站落后于 Nginx。那是前端服务器,提供所有静态文件,如 ttf/woff/eot/css/js/gif 等。只有 PHP 需要在后端代理到 Apache。

我遇到了“访问控制允许来源”指令。Nginx 也有办法做到这一点(有用的 ServerFault 文章和有用的StackOverFlow 文章),但我只想限制来自我拥有的某些域的访问。

我有点困惑的原因是因为我在提供字体和管理访问方面有三层:

  • 内容分发网络
  • Nginx 静态服务器
  • Apache(可能根本不需要,因为 Nginx 将文件提供给 CDN,然后 CDN 接管?)

我的问题:

  1. 我应该如何在 Nginx 中指定一些选择域。“*”真的不是我需要的。这是否适用于我的域并涵盖相关的子域 -
location ~* \.(eot|ttf|woff)$ {
  add_header Access-Control-Allow-Origin *.domain1.com,*.domain2.com
}
  1. 我应该在 Nginx 的什么地方指定这个块。在与我提供字体的特定域相关的 vhost 文件中(cache.mysite.com前面提到过)还是在整个 Nginx 配置中?

  2. 我需要 Apache 的东西吗?如果 Nginx 已经在处理 webfont 格式并控制对它的访问。

谢谢!

4

2 回答 2

1

如果浏览器从您的 CDN 下载字体,则无法检查标题。这是因为 Internap 会缓存下载的文件,否则 CDN 会减慢速度,而您的数据流量将保持不变。可能是 Internap 提供了仅接受某些推荐人的选项。

Access-Control-Allow-Origin选项可能有效,但您必须检查 CDN 是否也转发此标头。

于 2012-01-15T20:16:46.763 回答
0

您必须检查HTTP_REFERRER标头以查看文件是否正在从您自己的域访问。

如果没有,您可以随时重定向它们(也可能通过 403 错误)

于 2012-01-14T23:05:25.313 回答