Falha ao recarregar o Nginx - como rastrear por quê?

96

Oi Eu tive meu servidor Nginx rodando muito bem no servidor Ubuntu 12.04 por um tempo.

Eu tenho gradualmente aparafusado em vários bits e cheguei a otimizar os tempos de carregamento na minha página do wordpress.

Depois de fazer algumas alterações no arquivo hosts, decidi:

sudo /etc/init.d/nginx reload

Para o qual eu recebo:

  • Recarregando a configuração do nginx nginx [falha]

Nenhuma informação ou raciocínio adicional é fornecido. Como posso reiniciar o servidor para que ele imprima qualquer declaração de erro enquanto estiver recarregando para que eu possa começar a rastrear o erro.

Para uma pergunta bônus:

Para os administradores de sistemas Nginx, quando você faz várias alterações nos hosts e instala alguns outros bits, e de repente o servidor nginx não é recarregado (aliás, tudo ainda parece estar funcionando!), Como você começa sua abordagem para isolar por que ou começar a dividir as coisas para depurar!

Huw
fonte
4
Verifique sua sintaxe com sudo nginx -t(ou sudo nginx -p /etc/nginx -c nginx.confonde /etc/nginxestá seu prefixo de configuração e nginx.confo arquivo de configuração principal).
Lekensteyn
O sudo nginx -s reload também parecia me dar uma leitura!
Huw

Respostas:

145

Verifique o syslog (/ var / log / syslog) para obter mensagens sobre problemas no arquivo de configuração.

Na linha de comando, você pode executar:

nginx -c /etc/nginx/nginx.conf -t

para que o nginx verifique sua configuração quanto a erros.

Dlloyd
fonte
ah ha! muito útil, parece que estou conseguindo: local "/ blog / wp-admin" está fora do local "/blog/.*\.php$" em /etc/nginx/site-configs/wordpress.conf:1 ... interessante , me dá algo para continuar!
Huw
2
ARGH! Três horas de busca e eu tinha perdido uma; Obrigado por toda a ajuda, provou ser essencial para localizá-lo. Aliás, se alguém acabar com essa pergunta depois de seguir as postagens da Ars Technica na Web. Acho que já passei por eles com um pente fino agora!
Huw
4
executar este comando dá-me nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successfule ainda assim eu ainda não consigo nginx para começar
Bill Garrison
1
@BillGarrison verificar syslog e log de erro nginx para mais informações
Dlloyd
44

Execute este comando, você pode encontrar um problema.

sudo nginx -t
Nanhe Kumar
fonte
7

Você provavelmente deve verificar se há erros no /var/log/nginx/error.log.

No meu caso, não adicionei a porta para o ipv6. Você também deve fazer isso (caso esteja executando o nginx em uma porta diferente de 80): listen [::]:8000 default_server ipv6only=on;

Arvind07
fonte
1
Nota: se suas permissões estiverem erradas /var/log/nginx/error.log, o nginx não poderá gravar o erro e falhará silenciosamente. Verificar sua configuração como na resposta aceita ( nginx -c /etc/nginx/nginx.conf -t) ajudará.
user898763452
5

Eu executei esses comandos para obter o nginx de volta em funcionamento:

# remove nginx conf files
apt-get purge nginx

# reinstall
apt-get install nginx

# make sure the default site is enabled
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

# start nginx
sudo /etc/init.d/nginx start 

O nginx agora está funcionando !!

Aaron Lelevier
fonte
2
Você não precisa remover e limpar, basta limpar. E difícil saber se isso vai responder à pergunta, pois a remoção removerá todos os arquivos de configuração.
Panther
1
Idealmente - e para outros usuários I teria preferido para obter a quantidade máxima de leitura a respeito de onde a falha estava ocorrendo e repara a minha instalação atual em vez de purga e começar do zero
Huw
1
@ bodhi.zazen Corrigi minha resposta. E quanto ao que "Huw" disse, eu concordo. Só que eu estava no início da instalação e configuração, nginxentão não foi grande coisa apenas removê-lo e começar de novo, em vez de rastrear o erro. Obrigado a ambos por sua coragem.
Aaron Lelevier
no meu caso eu só eu tive que começar a usar este comando sudo /etc/init.d/nginx start
Código Sizzling
3

Verifique sua /etc/nginx/sites-available/defaultcópia ou o que você estiver usando e certifique-se de remover o comentário de #qualquer um }que seja necessário em relação ao {que provavelmente não foi comentado. Esse foi o meu problema.

kenisfis
fonte
2

É necessário limpar o nginx e digite na linha de comando:

ln -s /etc/nginx/sites-availbale/default .etc/nginx/sites-enabled/default
user445400
fonte
Você quer dizer apt-get purge?
RolandiXor
2

reabra todos os arquivos, usando

nginx -s reopen

então use

nginx -s reload

Como a ajuda do nginx mostra que sim, recarregue o nginx enviando o sinal para dominar process.it deve funcionar.

Pedido: não forneça purgecomandos sem cautela, pois isso pode causar problemas para iniciantes (todas as configurações serão perdidas) .... Um GRANDE problema.

Anto
fonte
1

Se estiver causando esses erros, você pode conferir journalctl -xe.
Tem um monte de informações sobre o que aconteceu em um problema de sistema operacional.
você pode encontrar a linha ou simplesmente journalctl -xe | grep nginxencontrar o que aconteceu com o nginx quando ele tentou rodar sozinho.

AmirHossein
fonte