Resposta proxy_pass do Nginx truncada

9

Uso o nginx para solicitar proxy https ao meu servidor de aplicativos (atualmente em execução no 8443).
Este servidor de aplicativos serve páginas dinâmicas, algumas delas incluindo jquery minificado.
As páginas estão com erro, pois parece que o jquery está truncado ... existe um limite de tamanho de arquivo ou algo assim?

Meu nginx conf é o seguinte:

server {
listen      443;
server_name my_serv.com;
ssl                 on;
ssl_certificate     certificate.pem;
ssl_certificate_key privatekey.pem;

keepalive_timeout 70;

location / {
  proxy_pass https://localhost:8443;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_buffering off;
  proxy_buffers 8 8k;
}
}
Luc
fonte
2
Verifique seu log de erros. Ele deve informar por que as conexões foram fechadas mais cedo.
precisa saber é o seguinte
Por que você não permite que o nginx sirva arquivos estáticos como o jquery.js?
VBart

Respostas:

8

Eu sei que essa pergunta é super antiga, mas acabei de encontrar o mesmo problema. Verifique se o usuário que está executando o nginx possui privilégios de gravação no diretório proxy_temp. Se você estiver fornecendo uma resposta maior por meio de seu servidor proxy que não pode ser mantida em seus proxy_buffers, o restante dos dados de resposta será gravado em disco no diretório proxy_temp. Se não puder, devido a privilégios inadequados (ou qualquer outra coisa, como espaço em disco), a resposta será truncada.

Uma maneira fácil de saber é que esse é o problema: limpe o cache do navegador e recarregue a página com as ferramentas de desenvolvedor do Chrome abertas. Encontre o arquivo truncado na guia rede e, se o tamanho corresponder ao tamanho do buffer do proxy (64k no seu caso), é provável que o nginx esteja com problemas para gravar no disco.

Mais informações sobre o nginx proxy_temp_path: http://wiki.nginx.org/HttpProxyModule#proxy_temp_path

Steve
fonte
1
Sua resposta me inspirou a resolver um problema semelhante
Tyler Longo
0

Se nos logs de acesso você vir o código de retorno 304 (não modificado) para o arquivo truncado, tente limpar o cache do navegador. Infelizmente, não consegui encontrar uma maneira de 'consertar' isso na configuração do nginx.

Marius
fonte
-1

Existe, mas por padrão seu 1G:

http://wiki.nginx.org/HttpProxyModule#proxy_max_temp_file_size

Como o @kolbyjack disse, provavelmente existem erros no error.log.

polinomial
fonte
2
Isso apenas define o tamanho máximo que um arquivo temporário pode ter. O nginx não truncará uma resposta se tudo não puder ser armazenado em buffer, será veiculado de forma síncrona a partir do upstream.
precisa saber é o seguinte