Использование второго бэкэнда с Varnish 1.0.3-2 в случае 404 с первого бэкенда - PullRequest
1 голос
/ 09 марта 2010

Раньше мы использовали настройку кэширующего прокси-сервера, используя очень раннюю версию Varnish (я думаю, 0.5ish), которая использовала действие «restart» для отправки запросов второму бэкэнду в случае 404 на первом. 1001 *

Новая версия Varnish, кажется, не поддерживает это - действие перезапуска больше не поддерживается, а переменная req.restarts больше не распознается. Возможно ли такое поведение?

Документация, кажется, устарела, как и многие онлайн примеры. man 7 vcl, похоже, отражает текущее поведение.

Если это невозможно с Varnish, можете ли вы предложить другое решение?

Вот соответствующие биты нашей старой конфигурации Varnish:

sub vcl_recv {

    # remove cookies
    remove req.http.Cookie;

    if (req.restarts == 0) {
        set req.backend = backend1;
    } else if (req.restarts == 1) {
        set req.backend = backend2;
    }

    # remove any query strings
    set req.url = regsub(req.url, "\?.*", "");

    # force lookup even when cookies are present
    if (req.request == "GET" && req.http.cookie) {
        lookup;
    }
}

sub vcl_fetch {
    # we might set a cookie from the Rails app
    remove obj.http.Set-Cookie;

    # force minimum ttl of 1 year
    if (obj.ttl < 31536000s) {
        set obj.ttl = 31536000s;
    }

    if (obj.status != 200 && obj.status != 302) {
        restart;
    }
}

1 Ответ

1 голос
/ 09 марта 2010

Похоже, это поведение было восстановлено в более поздних версиях Varnish.

...