HTTP аутентифицирует все запросы лака

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

Проблема, с которой я сталкиваюсь, заключается в том, что для службы, к которой мы подключаемся, требуется доступ с http-аутентификацией по любому из URL-адресов, на которые мы попали. Я хотел бы иметь возможность установить имя пользователя и пароль в моем файле default.vcl по умолчанию, чтобы он автоматически включал аутентификацию в каждом запросе.

2 ответа

Решение

Поэтому, чтобы решить эту проблему, я изменил заголовки HTTP следующим образом:

sub vcl_recv {
  set req.http.Authorization = "Basic d2h5ZGlkeW91OmRlY29kZXRoaXM=";
}

Закодированная часть - это base64 имени пользователя и пароля, которые вы хотите использовать:

echo -n "username:password" | base64

Вы можете установить атрибуты для внутреннего запроса в vcl_miss и vcl_pass.

Для проверки подлинности HTTP Basic вы можете сделать что-то вроде этого:

sub vcl_miss {
    if (req.backend == "backend2") {
        set bereq.http.Authorization = "Basic <base64string>";
    }
}

Дайджест-проверка подлинности HTTP для внутренних запросов не поддерживается.

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