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 для внутренних запросов не поддерживается.