Não parece que o objeto req
fornecido pela VCL padrão forneça uma maneira de obter a solicitação caminho , sem parâmetros de consulta, apenas a URL completa. Assim, usar alguns VMODs pode ajudar.
Você pode tentar usar o QueryString
VMOD, por exemplo (a partir de seus documentos) :
import querystring;
sub vcl_hash {
if (req.method == "GET" || req.method == "HEAD") {
hash_data(querystring.remove(req.url));
}
else {
hash_data(req.url);
}
hash_data(req.http.host);
return (lookup);
}
E outro bom VMOD, VSLP
pode também ser de interesse, dado o maior controle que ele fornece sobre a seleção de back-end.
Usando o Varnish 4.1, você pode usar:
sub vcl_recv {
if (req.http.host) {
set req.backend_hint = workers.backend(req.http.host + regsub(req.url, "\?.*$", ""));
}
else {
set req.backend_hint = workers.backend(server.ip + regsub(req.url, "\?.*$", ""));
}
}
Espero que isso ajude!