Tengo algunas preguntas sobre la configuración de Varnish. Tengo este archivo de configuración simple:
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);
}
}
Pregunta:
(1) he seguidoesteejemplo: set req.http.Location = "http://example.com" + req.url;
- sin embargo, no puedo recargar Varnish a menos que elimine este +
símbolo - ¿es necesario y cuál es su propósito?
# /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
Respuesta1
En 2.1, la concatenación de cadenas se ve así:
set req.http.Location = "http://example.com" req.url;
En 3.0 esto se hacía explícitamente usando "+".
https://www.varnish-cache.org/docs/3.0/installation/upgrade.html#string-concatenation-operator