Мне нужно настроить обратный прокси-сервер HTTP, который сможет кэшировать запросы к вышестоящему серверу.
Вышестоящий сервер обслуживает только статические файлы.
Проблема, с которой я сталкиваюсь, заключается в том, что мне нужен прокси, который способен запускать первый байт как можно скорее (он не может дождаться буферизации всего запроса), все еще кэшируя. Это потому, что мои файлы могут быть довольно большими (несколько сотен мегабайт), но приложение должно иметь быстрое время отклика.
Я пытался использовать nginx, но когда я отключил proxy_buffering, он вообще перестает кешировать.
Есть ли какой-нибудь широко доступный, хорошо протестированный проект с открытым исходным кодом, который может это сделать? Лак? Кальмар? HAProxy?
Лак подойдет для работы:
sub vcl_backend_response {
# ...
# Large static files are delivered directly to the end-user without
# waiting for Varnish to fully read the file first.
# Varnish 4 fully supports Streaming, so use streaming here to avoid locking.
if (bereq.url ~ "^[^?]*\.(mp[34]|rar|rpm|tar|tgz|gz|wav|zip|bz2|xz|7z|avi|mov|ogm|mpe?g|mk[av]|webm)(\?.*)?$") {
unset beresp.http.set-cookie;
set beresp.do_stream = true;
set beresp.do_gzip = false; # Don't try to compress it for storage
}
# ...
}
Вы можете настроить два сервера nginx, один с включенным proxy_buffering, а следующий, который будет кэшировать ответы от восходящего потока.