Я использую лак 3 позади nging для прокси-сервера нескольких сайтов в один домен. Базовая установка работает нормально, но теперь у меня проблема с лаком, обслуживающим неправильные файлы, если имя файла уже существует в кеше. В принципе все, что я делать в default.vcl это:Varnish служит неправильным файлам
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/", "/");
}
Если я сейчас называем /foo1/index.html, /foo2/index.html будет служить тот же файл. После перезапуска лака и вызова /foo2/index.html/foo1/index.html будет служить index.html файла foo2.
Насколько я выяснил, что это вопрос с созданием хэша, который не уважает использованный бэкенд, но только URL (после сокращения) и домен:
11 VCL_call c hash
11 Hash c /index.html
11 Hash c mydomain
Я решил эту проблему сейчас, изменяя мой vcl_hash также использовать бэкенд, но я уверен, что там должно быть лучше, более удобным способом:
sub vcl_hash {
hash_data(req.url);
hash_data(req.backend);
}
Любой намек был бы оценен, большое спасибо!
Спасибо! Второй подход выглядит и отлично работает, просто проверен! – deveth0