为 Discourse 启用 CDN


(Erick Guan) #1

原文位于官方论坛,翻译于 2014-10-11。

想要用 CDN 加快全球访问您 Discourse 论坛的速度吗?

选择一个您想使用的 CDN——我们强烈建议 Fastly(国内已墙)

CDN 的配置就像这样:

您需要看这三个主要设置:

源链接,是您论坛现在可以访问的地址,如 discourse.example.com。这是 CDN 在第一次请求时获取原始内容的地方。

CNAME,是您在 DNS 中为您的 CDN 设置地“友好的”地址,如 discourse-cdn.example.com

CDN URL,是一个从 CDN 全球各地的分发服务器上提供缓存内容的“不友好的”地址。

您需要编辑 DNS 至 CDN 的地址,例如

discourse-cdn.example.com IN CNAME 637763234.cdn-provider.com

(您编辑好 DNS 记录后,等待一会等待生效。)

Discourse 这的 CDN 设置及其简单。去掉 app.yml 中 CDN 一行的注释,并用 DNS 中设置的 CNAME 地址更新即可:

## the origin pull CDN address for this Discourse instance
DISCOURSE_CDN_URL: //discourse-cdn.example.com

(如果您在 app.yml 中没有看到这一行,将它添加在其他 DISCOURSE_ 系列变量之后)

像其他改变 app.yml 的操作一样,您需要重建容器:

./launcher rebuild app

当重建完后,用浏览器访问您的 Discourse。查看源代码,搜索“cdn”。您将能看到您的网站资料正由 CDN 分发:

<script src="http://discourse-cdn.codinghorror.com/assets/preload_store-4ea79c2f435becca86ac97a9c038f9c7.js"></script>
<script src="http://discourse-cdn.codinghorror.com/assets/locales/en-7084a68855205a9128245d2d0ce94ed9.js"></script>

关于全局cdn设置的疑问
Discourse 全站 CDN 加速
使用七牛 CDN
(黑桃杰克) #2

想问下启用CDN后多久才能使用呢? 目前我启用CDN后,原站都访问不了了,各种资源访问不到


(Erick Guan) #3

隔 1、2s 后刷新应该就可以正常访问了。


(黑桃杰克) #4

我在七牛中申请了免费空间(目前还是体验用户),镜像源配置成:http://coderq.com ,CDN的域名是 coderq.qiniudn.com,然后我在 DNSPOD里 写了条 CNAME ,从 cdn.coderq.com 指向 coderq.qiniudn.com,然后在app.yml 中 配置

## the origin pull CDN address for this Discourse instance
DISCOURSE_CDN_URL: //cdn.coderq.com

然后重建容器,接着就打不开网站,网站显示空白。

请问我这样配置正确吗?


(四川脑壳) #5

体验用户只能处理多媒体文件,必须要申请成标准用户才可以


(黑桃杰克) #6

您好,意思是必须是标准用户才能用 JS/CSS/IMAGE 这些资源的CDN服务吗?“


(四川脑壳) #7

是的是的


(黑桃杰克) #8

好的好的,多谢您的提醒,我再等两天吧 :smile:


(Erick Guan) #9

为什么要等两天?…实时的啊。

你请求网站 -> 请求 CDN -> CDN 抓取原来网站 -> 返回给你

只是因为第三步速度慢,然后 CDN 可能直接返回错误。但是这个过程很快就能完成的。


(Erick Guan) #10

源站就打不开。不知道配置正确了吗?

DNS 生效了吗?这个要等待 1 小时左右。

使用七牛的话源站不能是 https,他们的爬虫不支持。


(黑桃杰克) #11

@renjunok 说要成为标准用户才行,成为标准用户要审核身份证几天。

我暂时把CDN去掉了,然后刚配置SSL 出问题了。

如果不能是https,那就不能加SSL了呀,本站是怎么弄的 ?


(黑桃杰克) #12

如何使用七牛云来加速HTTPS站点,能简要介绍下吗?
我看 http://kb.qiniu.com/https-support 这篇帖子说了是支持的,但是在修改镜像源的时候说不支持。

不知道你是怎么实现的 ?


(Dante) #13

你好站长我有以下问题

1请问域名 前的符号“//” 需要去掉吗?

2我的社区已经配置了免费的SSL,之后我使用的 CDN(amazon cloudfront)勾选了免费提供的SSL

这两者冲突吗?我需要保留哪个?


(Shuai Zend) #14

@fantasticfears 文章说推荐使用fastly,fastly确实不错,速度快,但是价格太高昂。小站根本用不起。一个月费用至少150刀+
请问还有推荐的,基于varnish的cdn么? cloudflare虽然一个月20刀,价格比较合理,但是不是基于varnish的,速度太慢,所有请求都是请求到后端。还是想要有FPC功能。


#15

小站就不折腾什么CDN了,爱D不D,D了也浪费时间,速度慢就自娱自乐,国内的CDN都要备案,国外的用起来也不方便


(青草mc) #16

1.不需要去掉,"//"是协议,假如你的主站是 https://www.qcminecraft.com,CDN域名填 //cdn.qmcmc.cn,那么效果就是这样的:

或者你也可以填 https://cdn.qmcmc.cn

2.原站跟CDN必须是两个域名,不然就会出现许多问题
所以如果主站启用SSL,那么CDN域名必须启用SSL

:blush:


(Dante) #17

非常感谢 :smiley::smiley::smiley:


(Erick Guan) #18

这个代表自适应 http 或者 https,除非你要详细指定协议,留着就好了。

这是两件事。CDN 只处理图片和大的 JavaScript 文件。

你选择你觉得合适的 CDN。要么 http2 也足够


(xiasummer) #19

这种CloudFlare CDN可以这样配置吗?