Com um cenário tão simples como este, tenho certeza que você tem um firewall, dispositivo IDS / IPS ou qualquer outra coisa na frente do seu servidor nginx, que atrapalha os downloads. Em caso de dúvida, entre em contato com o seu ISP.
Sem reiniciar ou modificar a configuração, o nginx está enviando respostas incompletas às vezes. Hoje, eu consegui reproduzir bem, mas ainda não sei o que está errado ou como consertar.
Eu coloco um arquivo de 5MB no caminho de local / alias do site que o nginx está configurado para usar. Não há php5-fpm, módulos, etc. apenas nginx para servir arquivos estáticos.
Ao testar, não há outro usuário acessando o servidor, nem acesso http, exceto minhas solicitações de teste.
O download falha e o Google Chrome mostra no registro de tráfego que havia duas solicitações, embora eu tenha colocado o URL http para o download apenas UMA VEZ e não houve redirecionamento ou outra segunda solicitação iniciada por mim.
Mesmo problema no access.log do servidor, também:
[14/May/2014:14:06:53 +0200] "GET /dev/test_test.m4v HTTP/1.1" 206 1 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36"
[14/May/2014:14:06:53 +0200] "GET /dev/test_test.m4v HTTP/1.1" 200 130680 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.10
[14/May/2014:14:07:15 +0200] "GET /dev/test_test.m4v HTTP/1.1" 206 1 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36"
[14/May/2014:14:07:15 +0200] "GET /dev/test_test.m4v HTTP/1.1" 200 114684 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.10
Você pode ver que há sempre uma solicitação com tamanho de resposta = 1 e outra com tamanho misto, mas > 1. No entanto, o resultado no navegador é sempre o mesmo. = > resposta quebrada, falha no download.
Para ter certeza, não está relacionado a http status / response 206, adiciono max_ranges 0;
à configuração e tente novamente - > teste2.
[14/May/2014:14:11:36 +0200] "GET /dev/test_test.m4v HTTP/1.1" 200 152460 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36"
[14/May/2014:14:11:38 +0200] "GET /dev/test_test.m4v HTTP/1.1" 200 142296 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36"
O mesmo resultado no navegador. O download / request sempre falhou e o tamanho em access.log é sempre diferente, como um pedaço aleatório ou tamanho de resposta.
status do servidor: iowait, RAM, cpu estão quase ociosos. Não há alta carga ou limitação.
Este é um problema ou bug conhecido? Você sabe como corrigir isso?
Com um cenário tão simples como este, tenho certeza que você tem um firewall, dispositivo IDS / IPS ou qualquer outra coisa na frente do seu servidor nginx, que atrapalha os downloads. Em caso de dúvida, entre em contato com o seu ISP.
Tags configuration nginx