VCL

2013-04-26 38 views
4

这个问题看起来可能有点奇怪,但是用VCL中的穷人解决方案来解析已签名的请求(带有共享密钥,也称为HMAC的穷人解决方案),由引用者(主)站点创建,并且只有在签名正确且(签名)时间戳未过期时才从清单提供内容。VCL

也就是说,与Amazon S3的工作方式类似,您可以在其中轻松创建一个签名的S3对象临时URL,该URL临时URL将在指定的时间内过期几秒钟。

注意:我不是在说这里的缓存对象到期,而是客户端的URL到期。

当您只想给用户发送临时URL以防止长时间盗链而不检查引用链接头时,它会变得非常方便。

所以 - 对于VCL中的临时URL(最好是在vcl_recv中),使得内部对象到期的问题不成熟 - 解决方案。没有制作VMOD可能吗?

编辑:

我发现光油授权内容的另一种方式:

http://monolight.cc/2011/04/content-authorization-with-varnish/

但它仍然不是我想要达到的目标。

此致敬礼!

回答

3

是的,这是可能的。

实质上,您需要验证签名(摘要vmod),从它所在的任何头(regsub)中挑出时间戳,并将其与当前时间进行比较。

使用std.integer()投时间戳:

https://www.varnish-cache.org/docs/trunk/reference/vmod_std.html#integer 

使用内置的now变量VCL查找当前时间戳。您可能想要执行(now + 0s)以强制Varnish为您提供unix时间戳。

https://www.varnish-cache.org/docs/trunk/reference/vcl.html#variables 

摘要VMOD在GitHub上:

https://github.com/varnish/libvmod-digest 
+0

您好,我想实现这样的事情,但我无法使用std.integer((现+ “0”),0)。它现在失败了,因为现在+ 0s是DURATION而不是String ...你有什么想法吗? – aligot 2014-04-06 16:36:06