我有一些关于清漆configuration的问题。 我有这个简单的configuration文件:
backend default { .host = "127.0.0.1"; .port = "80"; } sub vcl_recv { if (req.http.Host == "192.168.1.100") { set req.http.Location = "http://example.com" req.url; error 750 "Permanently moved - TEST"; } } sub vcl_error { if (obj.status == 750) { set obj.http.Location = req.http.Location; set obj.status = 301; return(deliver); } }
题:
(1)我跟着这个例子: set req.http.Location = "http://example.com" + req.url; – 但是我不能重新加载清漆,除非我删除这个+符号 – 它是必需的,它的目的是什么?
# /etc/init.d/varnish reload Loading vcl from /etc/varnish/default.vcl Current running config name is reload_2013-12-17T15:01:43 Using new config name reload_2013-12-17T15:18:31 Message from VCC-compiler: Expected variable, string or semicolon (input Line 124 Pos 58) set req.http.Location = "http://example.com" + req.url; ---------------------------------------------------------#--------- Running VCC-compiler failed, exit 1VCL compilation failed Command failed with error code 106 varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 vcl.load failed
在2.1string连接看起来像这样:
set req.http.Location = "http://example.com" req.url;
在3.0中,这是明确使用“+”。
https://www.varnish-cache.org/docs/3.0/installation/upgrade.html#string-concatenation-operator