Можно ли указать бэкэнд Varnish в автономном приложении?

На данный момент у нас есть 3 приложения (лаковые бэкэнды):

  1. Eshop
  2. CMS
  3. Маршрутизация - приложение, которое возвращает код состояния, для которого следует выбрать бэкэнд.

Основная идея заключается в том, что у нас есть один домен для Eshop и CMS. И все ссылки хранятся в базе данных MySQL. Таким образом, чтобы решить, куда должен попадать лак, мы используем какое-то приложение для маршрутизации.

Если мы запускаем бэкэнд маршрутизации в vcl_recv, мы проверяем состояние в vcl_backend_response и переключаем бэкэнд следующим образом:

sub vcl_backend_response {
    if (591 == beresp.status) {
        set bereq.backend = eshopDirector.backend();
        return (retry);

    } elsif (592 == beresp.status || 593 == beresp.status || 594 == beresp.status) {
        set bereq.backend = cmsDirector.backend();
        return (retry);
    }
}

После повторных попыток мы не кешируем результаты, потому что этап vcl_recv не выполняется снова, чтобы определить, нужно ли получать результаты из кеша или из самого бэкэнда.

Итак, вопрос здесь, есть ли способ определить, какой бэкэнд должен использоваться со стадии vcl_recv, чтобы впоследствии получить кэшированные результаты? Может быть, можно сделать запрос CURL оттуда, чтобы получить статус из приложения маршрутизации и обработать его соответствующим образом?

0 ответов

Другие вопросы по тегам