
업스트림 서버에 대한 요청을 캐시할 수 있는 HTTP 역방향 프록시를 설정해야 합니다.
업스트림 서버는 정적 파일만 제공합니다.
내가 직면한 문제는 캐싱을 계속하면서 첫 번째 바이트를 최대한 빨리 시작할 수 있는 프록시(전체 요청이 버퍼링될 때까지 기다릴 수 없음)가 필요하다는 것입니다. 내 파일이 상당히 클 수 있지만(수백 메가바이트) 앱 요구 사항은 빠른 응답 시간을 가져야 하기 때문입니다.
nginx를 사용하려고 했지만 Proxy_buffering을 비활성화하면 캐싱이 전혀 중지됩니다.
이를 수행할 수 있는 널리 사용 가능하고 잘 테스트된 오픈 소스 프로젝트가 있습니까? 광택? 오징어? HAProxy?
답변1
바니시는 작업에 적합합니다.
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
}
# ...
}
답변2
두 개의 nginx 서버를 설정할 수 있습니다. 하나는 활성화된 Proxy_buffering이고 다음 하나는 업스트림의 응답을 캐시할 것입니다.