У меня здесь нет Varnish для тестирования, но мне кажется, что вы не избегаете простого текста в своем RewriteCond. Шаблон всегда считается регулярным выражением, поэтому пробелы и точки имеют особое значение. Попробуйте:
RewriteCond %{HTTP:Via} =1\.1\ varnish
RewriteRule ^node / [R=301,NC,L]
Кстати, это немного запутанный способ делать что-то. Обычно вы проверяете заголовок X-Forwarded-By, чтобы определить, находитесь ли вы за прокси-сервером. Поскольку они могут быть подделаны и / или добавлены вышестоящими прокси, вам следует либо:
Поскольку Varnish не предназначен для этого, вы должны использовать для этого небольшой трюк.
Для отправки HTTP-перенаправления лучший способ - подготовить конкретный обработчик ошибок и поднимите этот обработчик ошибок в зависимости от ваших требований.
Шаг 1) Подготовьте обработчик ошибок для отправки перенаправления
sub vcl_error {
...
# redirect
if (obj.status == 750) {
set obj.status = 301;
set obj.http.Location = "http://www.error-location.com/";
return (deliver);
}
...
}
Шаг 2) Поднимите подготовленный обработчик ошибок
sub vcl_recv {
...
# raise error if someone requests /node
if (req.url ~ "^/node") {
error 750;
}
...
}
В качестве альтернативы вы можете настроить обработчик ошибок для использования динамической цели
sub vcl_error {
...
# redirect to dynamic target
if (obj.status == 750) {
set obj.status = 301;
set obj.http.Location = obj.response;
return (deliver);
}
...
}
...
sub vcl_recv {
...
# redirect, if someone requests /node
if (req.url ~ "^/node") {
error 750 "http://www.error-location.com/";
}
...
}