使用urlEncoded参数进行清漆

时间:2014-01-30 15:10:54

标签: varnish varnish-vcl

我是Varnish的新手,但我正在尝试将其用作反向代理。一切都很好,除了当应用程序将url编码的参数附加到请求时,它永远不会进入服务器。

我们尝试从哈希中删除参数,但它似乎不是我们麻烦的来源

sub vcl_hash {
     hash_data(regsub(req.url, "\?.*", ""));
     return (hash);
}

1 个答案:

答案 0 :(得分:1)

通过运行varnishlog命令检查其输出,找出幕后发生的事情的最佳方法是检查其输出。

对于您粘贴的VCL代码,这告诉Varnish忽略查询参数(?a=b&c=d&e=f)以进行缓存。因此,以下URL将引用缓存中的同一对象:

http://your.site/some_page.html
http://your.site/some_page.html?a=b&c=d&e=f
http://your.site/some_page.html?abc=xyz

假设响应是可缓存的,您的后端将只看到它看到的第一个此类URL的请求。所有后续请求(无论查询参数如何)都将直接从缓存提供,直到缓存对象过期。

您提到了“url encoded”参数,但除非您有专门处理%XX编码八位字节的VCL代码,否则它们对Varnish处理请求的方式不会有任何影响。