2017-02-23 64 views
1

我们有一个具有HTTP身份验证的测试服务器。Cloudflare(以及其他基于DNS的CDN) - 使用Auth缓存

Cloudflare正被用于做CDN缓存。

测试服务器已通过身份验证以避免被Google索引(因为robots.txt文件偶尔会被删除!)。

如果我们在此服务器上进行身份验证,Cloudflare是否可以缓存内容?

如果是这样,它是如何做到这一点?我认为内容将直接在服务器和浏览器之间传输。

+0

CF应该通过身份验证,并缓存静态资源。 – Jules

回答

0

我不是cloudflare CDN的专家。但是让我总体告诉你这是如何工作的或者它在Akamai中的工作原理。

如果你有一个认证保护的网站说https://secure.test.com/admin

因此当请求被发送到CDN。 CDN将检查传入的请求是否有可以理解的令牌(Cookie)。如果没有,那么它会将请求发送到您的原始服务器。但在这之前,它会附加类似/token.php?return=/admin的内容

现在原始服务器会对用户进行身份验证。一旦完成,它将在原始服务器中执行token.php,它将与其他应用程序cookie一起生成一个唯一的加密标记。基本上,您在此token.php中用于加密cookie生成的密钥将与您在CDN配置中添加的密钥相同。

因此,下一个进入/ admin的请求将有一个cdn令牌,cdn将使用您在CDN配置中具有的密钥(与源的相同)验证其真实性。如果成功,它将从其缓存中提取内容。

注意:确保CDN令牌过期小于应用程序cookie。 说你的应用程序会话cookie是8小时,然后最好把cdn cookie设置为1小时左右。通过这个CDN将在一个小时内联系你的原产地,并重新获得它的令牌。希望我没有使它更加混乱;-)

+0

重新附加'/token.php?return =/admin'之类的东西,你的意思是这个URL吗?或者cookie?如果它是URL,那么这不会冒险破坏Web应用程序。如果它是cookie,那么我会使用相同的逻辑。 – Snowcrash

+0

而我不清楚你在'origin server'执行token.php是什么意思。当然这个文件不会存在于原始服务器上。 – Snowcrash

+0

你好,以及token.php只是一个例子,它也可以是任何其他的编程版本文件。通常这个文件是由CDN提供商提供的。基本上这个文件会在用户通过身份验证并在用户浏览器中设置cookie后生成一个cookie,以便下次浏览器发出请求时,CDN知道这是一个真实用户。 – Vinod