O que significa erro de Protocolo ERR SPDY na nginx?

Eu e alguns dos meus colegas temos o erro.

usamos ngnix versão 1.8.0. O erro não é estável (difícil de replicar), e o log de erro Ngnix não tem esse erro.

Como nos aconselharia a apanhar e resolver isto?

 11
Author: Ahmed Fasih, 2015-11-23

11 answers

Eu tive o mesmo problema, verifique se você tem espaço suficiente na partição Nginx/HDD, nós adicionamos alguns e funcionou para nós.

 3
Author: Simon Iribarren, 2016-10-26 16:11:54

TL; DR: Se estiver a cachar activos, então verifique o espaço de transmissão no seu servidor nginx.

O Nosso Cenário

Não tenho a certeza onde publicar a minha resposta a isto, uma vez que pode ser um caso de aresta ao obter o {[[0]} no Chrome (e o erro equivalente de "falha na carga do recurso" no Firefox). Mas este post ajudou-me a reduzir o culpado. Não eram cabeçalhos, gzip, redirecções, ou adblock/ublock.

Temos 2 aplicações web implantadas da máquina, e ambas foram ... a correr perfeitamente bem. Recentemente, implantamos uma das aplicações com mudanças nos ativos do cache. Assim que a missão terminou, recebemos imediatamente o ERR_SPDY_PROTOCOL_ERROR do Chrome. Curiosamente, estava a receber um {[[2]} e se navegasse directamente para o activo, o Chrome renderia o activo. No entanto, carregar o activo numa página causaria o seu fracasso.

Curiosamente, a outra aplicação web estava perfeitamente bem. Investigando os internos da rede no Chrome, descobrimos o o servidor estava a fechar a ligação. Depois de várias horas, determinámos que era porque o nosso servidor nginx tinha esgotado o espaço de transmissão. Não sei por que isso faria com que os ativos carregassem corretamente quando você navega diretamente para eles, mas falhar quando você carrega uma página, mas limpar o espaço imediatamente corrigiu o problema.

 3
Author: Kyle Schutt, 2018-06-03 19:47:24
Parece haver muitas causas potenciais. Um que eu bati hoje foi a linha de cabeçalho

Add_ header X-Frame-Options: deny;

O cromado actual vai vomitar com ssl+http2 por alguma razão. Outros cabeçalhos de quadros X não parecem ser um problema.

 2
Author: Hal Burgiss, 2017-08-10 19:51:40
Deparei-me com esta questão ao tentar encontrar Ajuda para o problema que enfrentava com o Chrome. Pensei que isto pudesse beneficiar outros.

A nossa situação / solução: usamos um Balancer de Aplicação AWS ligado aEC2 instâncias. Um dos scripts que executamos com o EC2 proxies pedidos do navegador cliente. Recentemente, atualizamos o script - sem alterações relevantes-e notamos que os pedidos Chrome e Safari para o script proxy começaram a falhar. Cromo mostrou o erro ERR_SPDY_PROTOCOL_ERROR e, quando entrámos nele, pudemos ver que este pedido estava a usar o HTTP / 2. Os pedidos do Firefox continuaram a funcionar bem.

A nossa solução: desligámos o suporte HTTP / 2 no ALB. Imediatamente resolveu o problema.

Comando AWS CLI:

aws elbv2 modify-load-balancer-attributes --load-balancer-arn <your_load_balancer_arn> --attributes Key=routing.http2.enabled,Value=false
 2
Author: CharlesA, 2018-08-28 14:01:20
Como podes ver pelas outras respostas, muitas coisas diferentes podem causar isto. Para mim, eu tinha um cabeçalho malformado que outros navegadores estavam apenas ignorando (um extra :). A única resposta para isto é uma dica de depuração, verificar os eventos net-internals do Chrome ao carregar a página quebrada: chrome:/ / net-internals / #events Para mim, sabia que era uma questão de cabeçalho quando vi esta linha.
t=65422 [st=53]      HTTP_TRANSACTION_READ_HEADERS  [dt=4]
                 --> net_error = -337 (ERR_SPDY_PROTOCOL_ERROR) 
 1
Author: lightswitch05, 2018-08-22 16:49:17

Esta é uma questão conhecida que existe entre navegadores de crómio e certos programas antivírus como AVG e Avast, especialmente quando se utiliza uma ligação SSL. Não pode ser resolvido no fim do utilizador. Cabe aos desenvolvedores do site impedir que este problema aconteça.

A documentação para os programadores da web está aqui: http://dev.chromium.org/spdy/spdy-best-practices

Aqui estão algumas dicas úteis para desenvolvedores que não são especificamente mencionados nesse artigo:

  • Tenha muito cuidado ao usar cabeçalhos e redirectos, especialmente 301 e 302's
  • Mantenha todas as suas inclusões dentro ou sob o mesmo diretório que o seu acesso de nome de domínio, não acima do diretório no servidor. O Antivírus não pode aceder-lhes lá. Para proteger seus arquivos de inclusão, crie um .ficheiro htaccess no directório includes e basta escrever uma linha: NY from all
  • activar a compressão Gzip. Se você usar cPanel, isso pode ser feito em seu site Configuração da optimização.
  • Fica com o teu .ficheiro htaccess simples. Mudar as saídas do servidor para criar diferentes extensões de ficheiros e redireccionar os clientes do Utilizador irá criar conflitos desnecessários.

Pela minha experiência, este problema só parece ocorrer quando se usam sessões para armazenar e passar dados. Cookies, Get E Post parecem não ser afetados.

Espero que isto ajude.
 0
Author: AnarchyOutlaw, 2017-03-09 01:46:08
Tive um site a fazer isso, mas acabou por ser alguém que se esqueceu de colocar "localização:" num redireccionamento do PHP na primeira linha do Índice.php, invalidando o cabeçalho. Aparentemente só o Chrome se importava, mas o resto dos navegadores ainda o carregavam bem.
 0
Author: David Bell, 2017-08-08 14:15:57
Tal como com a operação, esta foi uma questão intermitente para mim e só aconteceu em pedidos AJAX de tamanho > 2mb. O problema começou a ocorrer depois de passarmos de um ELB clássico do AWS para o ALB.

Resolvi isto desinstalando o Chrome, apagando o meu perfil de utilizador (no mac, apaga o conteúdo de ~/Library/Application Support/Google/Chrome) e reinstalando-o.

 0
Author: greg, 2017-12-13 19:53:49

Vi este erro recentemente após uma actualização do servidor.

Estava a vê-lo para todos os utilizadores no cromado, mas apenas intermitentemente.

Consegui resolvê-lo para todos os utilizadores, fazendo-os usar a função de actualização 'Cache vazio e recarga' do Chrome para o site. (F12 para as ferramentas cromadas, carregue com o botão direito no botão Actualizar)

Suspeito que esteja relacionado com algo em cache sobre os certificados SSL a serem usados.
 0
Author: Josh, 2018-02-28 02:54:33

Para mim, foi a configuração Nginx que não permitiu o método das opções. Eu tinha whitelisted GET|PUT|POST / DELETE somente, então quando o Chrome tentou enviar o método de opções, Deus sabe por que**, o erro foi reproduzido.

Abra o Firefox e repita o pedido, em seguida, olhe para o inspetor de rede para verificar se quaisquer opções pedidos estão sendo enviados.

** provavelmente para verificar se existem opções X-Frame ou verificação dos OCS.

 0
Author: Nj Subedi, 2018-04-04 10:48:13

Verifique a localização da sua localização da 'cache' do 'proxy' - verifique se existe, tem espaço, e que as permissões e o dono permitem que o processo nginx escreva para a localização.

Por exemplo nginx.conf (excerto)

proxy_cache_path /proxy_cache levels=1:2 keys_zone=danger_zone:10m inactive=60m;

... em seguida, verifique se a localização /proxy_cache é propriedade e pode ser escrita por nginx.

 0
Author: Nick Grealy, 2018-09-11 00:38:59