Hi Roman,

I can confirm that indeed does fix the problem, thanks!

I do wonder though, why not let nginx make the decision instead of relying on 
what the origin sends or does not send?

Thanks!

On 14/11/2018, 17.36, "nginx on behalf of Roman Arutyunyan" 
<nginx-boun...@nginx.org on behalf of a...@nginx.com> wrote:

    Hi,
    
    On Wed, Nov 14, 2018 at 02:36:10PM +0000, Lucas Rolff wrote:
    > Hi guys,
    > 
    > I've been investigating why byte-range requests didn't work for files 
that are cached in nginx with proxy_cache, I'd simply do something like:
    > 
    > $ curl -r 0-1023 https://cdn.domain.com/mymovie.mp4
    > 
    > What would happen was that the full length of a file would be returned, 
despite being in the cache already (I know that the initial request, you can't 
seek into a file).
    > 
    > Now, after investigation, I compared it with another file that I knew 
worked fine, I looked in the file on disk, the only difference between the two 
files, was the fact that one cached file contained Accept-Ranges: bytes, and 
another didn't have it.
    > 
    > Investigating this, I tried to add the header Accept-Ranges: bytes on an 
origin server, and everything started to work from nginx as well.
    > 
    > Now, I understand that Accept-Ranges: bytes should be sent whenever a 
server supports byte-range requests.
    > I'd expect that after nginx has fetched the full file, that it would be 
perfectly capable of doing byte-range requests itself, but it seems like it's 
not a possibility.
    > 
    > I'm not really sure if this is a bug or not, but I do find it odd that 
the behavior is something like: "If origin does not understand byte-range 
requests, then I also shouldn't understand them".
    > 
    > Is there a way to solve this on the nginx side directly to "fix" origin 
servers that do not send an Accept-Ranges header, or is it something that could 
possibly be fixed in such a way that nginx doesn't "require" the cached file to 
contain the "Accept-Ranges: bytes" header, to be able to do range requests to 
it?
    
    The "proxy_force_ranges" directive enables byte ranges regardless of the
    Accept-Ranges header.
    
    http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_force_ranges
    
    -- 
    Roman Arutyunyan
    _______________________________________________
    nginx mailing list
    nginx@nginx.org
    http://mailman.nginx.org/mailman/listinfo/nginx
    

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to