Ich benutze eine Lack 3 hinter einem Nging, um mehrere Websites in einer Domäne zu proxy. Die grundlegende Einrichtung funktioniert gut, aber ich habe jetzt ein Problem mit Lack dienen die falschen Dateien, wenn der Dateiname bereits in seinem Cache existiert. Im Grunde alles, was ich in meinem default.vcl tun, ist dies:Varnish serviert falsche Dateien
if(req.url ~ "^/foo1") {
set req.backend = foo1;
set req.url = regsub(req.url, "^/foo1/", "/");
}
else if(req.url ~ "^/foo2") {
set req.backend = foo2;
set req.url = regsub(req.url, "^/foo2/", "/");
}
Wenn ich jetzt /foo1/index.html nennen, /foo2/index.html die gleiche Datei dienen. Nach einem Neustart von Lack und einem Aufruf von /foo2/index.html wird /foo1/index.html foo2's index.html bedienen.
Soweit ich dies ist ein Problem mit der Schaffung des Hash herausgefunden, die nicht die verwendeten Backend nicht respektieren, sondern nur die URL (nach dem Kürzen) und die Domain:
11 VCL_call c hash
11 Hash c /index.html
11 Hash c mydomain
ich dieses Problem gelöst jetzt meine vcl_hash durch Änderung auch das Backend zu verwenden, aber ich bin es sicher besser, bequemer Weg sein muss:
würde geschätztsub vcl_hash {
hash_data(req.url);
hash_data(req.backend);
}
Jeder Hinweis, vielen Dank!
Vielen Dank! Der zweite Ansatz sieht aus und funktioniert gut, nur getestet! – deveth0