Я создаю новый балансировщик нагрузки, и мне нужно настроить кеш для хранения только определенных типов файлов. На данный момент моя конфигурация хочет кэшировать только все, достаточно маленькое, чтобы поместиться. Я попытался настроить переменную на основе запроса и вызвать ее в операторе cache-store, но в зависимости от поведения службы она все кэширует.
Мы настроили тестовое окно для извлечения и включили задержку в ответ, чтобы мы могли определить, был ли ответ от тестового сервера или кеша. Мы также можем увидеть завитки в журнале доступа, если они действительно попадают на сервер. Меня не беспокоит, что мой тест ошибочен; У меня есть четкое доказательство того, когда запрос попадает на сервер, а не когда он извлекается из кеша.
Вот соответствующие части моей конфигурации
frontend <redacted>
bind <IP>:80
bind <IP>:443 ssl crt <certificate.pem> ssl-min-ver TLSv1.2 alpn h2,http/1.1
http-request set-var(req.path) hdr(Path) if { path_end .jpeg .jpg .png .gif .svg .ico .css .less .ttf .eot }
acl cachedata path_end .jpg .jpeg .png .gif .svg .ico .css .less .ttf .eot
http-request add-header X-Forwarded-Proto https if { ssl_fc }
http-request cache-use lb if cachedata
http-response cache-store lb if { var(req.path) -m end .jpg .jpeg .png .gif .svg .ico .css .less .ttf .eot }
redirect scheme https code 301 if !{ ssl_fc }
default_backend <redacted>
cache lb
total-max-size 1024
max-age 600