캐싱하는 동안 파일을 보내는 역방향 프록시를 설정하려면 어떤 소프트웨어를 사용할 수 있습니까?

캐싱하는 동안 파일을 보내는 역방향 프록시를 설정하려면 어떤 소프트웨어를 사용할 수 있습니까?

업스트림 서버에 대한 요청을 캐시할 수 있는 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이고 다음 하나는 업스트림의 응답을 캐시할 것입니다.

관련 정보