这个问题可能看起来有点奇怪,但是有可能在VCL中使用穷人解决方案来解析由引用者创建的签名请求(使用共享密钥,也就是HMAC的穷人解决方案) (主要)网站,如果签名正确且(签名)时间戳尚未过期,则仅提供清漆内容?
也就是说,类似于Amazon S3的工作方式,您可以轻松地创建一个签名的临时URL到S3对象,该URL将在规定的秒数内到期。
注意:我不是在谈论缓存对象到期,而是客户端的URL到期。
当您只想向用户提供临时URL以防止长期热链接而不检查referrer-header时,它会派上用场。
所以 - 对VCL中的临时URL(最好是在vcl_recv中)的一个穷人解决方案,使内部对象过期)。是不是可以不制作VMOD?
编辑:
我找到了另一种使用Varnish授权内容的方法:
http://monolight.cc/2011/04/content-authorization-with-varnish/
但它仍然不是我想要达到的目标。
祝你好运!
答案 0 :(得分:3)
是的,这是可能的。
本质上你需要验证签名(摘要vmod),从它所在的标题中选择时间戳(regsub),并将其与当前时间进行比较。
使用std.integer()
转换时间戳:
https://www.varnish-cache.org/docs/trunk/reference/vmod_std.html#integer
使用VCL中的内置now
变量来查找当前时间戳。您可能希望(now + 0s)
强制Varnish为您提供unix时间戳。
https://www.varnish-cache.org/docs/trunk/reference/vcl.html#variables
摘要vmod在github上:
https://github.com/varnish/libvmod-digest
答案 1 :(得分:0)
如果有帮助的话,已有VMOD吗?