Nginx 1.2.1: Como analisar 500 Erro interno do servidor

1

Sou responsável por um servidor nginx que redireciona e divide solicitações. No nosso mecanismo de produção nós rodamos o nginx 1.2.1 e em uma máquina de teste rodamos o 1.4.1. A configuração é a mesma, mas no ambiente de produção eu sempre obtenho um 500 Internal Server Error" , mas no ambiente de teste tudo funciona bem. Eu sempre verifiquei o access.log e o error.log do Nginx. Mas não há nada para se preocupar.

Como posso analisar o erro e investigar mais sobre a causa desse erro?

    
por shylynx 05.03.2014 / 09:15

4 respostas

1

Aqui está a lista de verificação do nginx que eu uso quando estou diagnosticando erros.

  1. verifique sua configuração do nginx usando

    sudo nginx -t
    

    é um passo muito básico, mas que deve ser sempre feito primeiro.

  2. verifique se o nginx está sendo executado

    sudo service nginx status
    
  3. Verifique os arquivos de log especificados na configuração do site

    find /etc/nginx -name '*.conf' | xargs grep -i log
    
  4. Se você está recebendo um erro 500, você deve ver uma entrada no seu log de erros relacionada ao erro que lhe dará uma dica de por que o erro está acontecendo. Se você não vir uma mensagem de erro no seu log de erros, você terá um problema de configuração do log de erros e desejará verificar os registros de data e hora no arquivo de log de erros para certificar-se de que está sendo atualizado.

por 24.12.2016 / 06:39
1

A primeira coisa a se perguntar: o que está emitindo a resposta 500. Observar os cabeçalhos de resposta e o estilo da página dirão muito sobre o local de origem. Por exemplo. Existe um cabeçalho X-Powered-By na resposta? Se assim for, não teria vindo do Apache (por exemplo).

Uma página de erro do Tomcat parece muito diferente de uma página do Nginx, em comparação com o Apache, etc. É por isso que eu treino as pessoas no trabalho para me dar uma boa captura de tela.

Além disso, se você ver registros de 500, mas nada no log de erros, provavelmente ele veio do backend e você deve procurar lá.

Além disso, por que suas versões nginx de teste e produção são diferentes? Você não disse nada sobre o uso da mesma versão na produção como no teste.

Cuidado com mudanças no comportamento padrão em diferentes versões de software. Lembrei-me disso há algum tempo recentemente migrando para o Apache 2.4 do 2.2.

Finalmente, você diz que o backend é o mesmo (realmente, como na mesma instância?) para teste e prod, mas isso não significa necessariamente que um pedido seria processado da mesma forma (por exemplo, cabeçalho de host diferente ou servidor SNI nome sendo passado)

Espero que isso ajude você a dominar a depuração de proxy reverso.

    
por 07.11.2017 / 05:38
0

Você pode verificar as conexões externas de sua configuração do nginx (Proxy, FCGI ...) e verificar seus registros.

    
por 05.03.2014 / 09:37
-1

Para capturar quaisquer solicitações / erros externos que você possa obter e causar um erro 500: Você também pode executar seu endereço que está tentando acessar em um navegador Chrome ao abrir a página chrome: // net-internals no menu "Eventos".

Lá você pode analisar mais solicitações / respostas externas (informações de dns, cabeçalhos enviados, etc.)

    
por 03.04.2017 / 13:28