Hi Lucas, On Wed, Nov 14, 2018 at 06:50:23PM +0000, Lucas Rolff wrote: > 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?
nginx tries to be transparent and do not introduce any changes in the response and behavior of the origin unless explicitly requested. > Thanks! > > On 14/11/2018, 17.36, "nginx on behalf of Roman Arutyunyan" > <[email protected] on behalf of [email protected]> 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 > [email protected] > http://mailman.nginx.org/mailman/listinfo/nginx > > > _______________________________________________ > nginx mailing list > [email protected] > http://mailman.nginx.org/mailman/listinfo/nginx -- Roman Arutyunyan _______________________________________________ nginx mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx
