Кэш/прокси Varnish для нескольких источников

Кэш/прокси Varnish для нескольких источников

Мы используем Varnish 3.0.3.

Веб-сайт обслуживает изображения с двух доменов. Изображения, имеющие тот же URL, что и домен сайта, успешно кэшируются и обслуживаются через Varnish. Изображения, поступающие с другого домена, игнорируются. Мы хотели бы, чтобы все изображения доставлялись через Varnish независимо от того, откуда они поступают.

Я попробовал два подхода. Это две очень простые конфигурации Varnish. Эти две конфигурации работают, но изображения со второго домена игнорируются Varnish. Когда я наблюдаю за активностью браузера, он делает запрос напрямую на второй домен для этих изображений вместо того, чтобы быть доставленными Varnish.

В бэкэнде есть все изображения для обоих доменов. Веб-сайт просто закодирован для извлечения изображений с двух разных доменов. Я не могу изменить код веб-сайта, чтобы использовать один домен.

Похожий сценарий был бы, если бы наш веб-сайт извлекал изображения из нашей учетной записи Flickr или извлекал изображения из CDN. Можно ли было бы кэшировать Varnish и доставлять эти изображения? Я понимаю, что мы бы указали другой бэкэнд, но в моем тестировании я не могу получить ничего, кроме основного домена, который будет доставлен Varnish.

Цель этого — служить в качестве пограничного местоположения региона. Сервер Varnish должен обслуживать весь контент вместо того, чтобы посетитель извлекал контент из разных источников/доменов.

1.

backend  default {
.host = "192.168.1.1";
.port = "http";
}

sub vcl_recv {
if (req.url ~ "\.(gif|jpg|jpeg|png)$") {
unset req.http.cookie;
unset req.http.Accept-Encoding;
unset req.http.Vary;
set req.backend = default;
return(lookup);
}
}

sub vcl_fetch {
set beresp.ttl = 24h;
set beresp.grace = 23h;
}

2.

backend  default {
.host = "192.168.1.1";
.port = "http";
}

sub vcl_recv {
#Primary domain of site
if (req.http.host == "www.domain.com") {
set req.backend = default;
return (lookup);
#Domain where images are stored
} elsif (req.http.host == "www.domain2.com") {
set req.backend = default;
return (lookup);
}
}

sub vcl_fetch {
set beresp.ttl = 24h;
set beresp.grace = 23h;
}

Связанный контент