Nginx pára inadvertidamente com erro bind () para 0.0.0.0:80 falhou (98: Endereço já em uso)

2

Estamos executando um aplicativo de nó js com Nginx como um proxy reverso no servidor de demonstração e produção.

O Nginx foi interrompido inconscientemente com o erro abaixo. Eu faço o login no servidor e simplesmente inicio o nginx manualmente sudo service nginx start e ele inicia com sucesso . Mas ainda não conseguiu descobrir a causa raiz do desligamento. Isso ocorreu duas vezes no servidor de demonstração e graças a Deus não no servidor prod até agora.

2018/04/05 12:44:03 [notice] 20030#20030: signal process started
2018/04/06 00:35:49 [notice] 23507#23507: signal process started
2018/04/06 12:08:18 [notice] 25473#25473: signal process started
2018/04/06 12:08:18 [error] 25473#25473: open() "/run/nginx.pid" failed (2: No such file or directory)
2018/04/06 12:08:20 [notice] 25479#25479: signal process started
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to [::]:80 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to [::]:80 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to [::]:80 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to [::]:80 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to [::]:80 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: bind() to 0.0.0.0:443 failed (98: Address already in use)
2018/04/06 12:08:22 [emerg] 25514#25514: still could not bind()
2018/04/06 12:08:24 [alert] 25475#25475: unlink() "/run/nginx.pid" failed (2: No such file or directory)
2018/04/07 00:02:58 [notice] 28369#28369: signal process started
2018/04/07 00:02:58 [error] 28369#28369: invalid PID number "" in "/run/nginx.pid"
2018/04/07 12:12:44 [notice] 30352#30352: signal process started
2018/04/07 12:12:44 [error] 30352#30352: invalid PID number "" in "/run/nginx.pid"
2018/04/08 00:43:19 [notice] 811#811: signal process started
2018/04/08 00:43:19 [error] 811#811: invalid PID number "" in "/run/nginx.pid"

De acordo com a pergunta , ele diz sobre o problema ao reiniciar, mas no meu caso ele é desligado automaticamente.

De acordo com este pergunta , sugere adicionar ipv6only=on a [::]:80 , mas o que segue é o que o arquivo padrão nginx tem da instalação e eu adicionei nginx config para o nó js conforme o answer

configuração do servidor padrão

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;
    server_name _;

configuração do vhost

server {
    listen 80;
    listen [::]:80;
    server_name demo.api.example.com;

Clarificação adicional necessária

Acho que 20030#20030: signal process started se refere à recarga do nginx. Por que o nginx é recarregado duas vezes por dia? Tem alguma coisa a ver com o Nginx Amplify Agent ou com o comportamento padrão do nginx?

Detalhes do servidor:

  • SO: Ubuntu 16.04.2 LTS
  • Nginx: nginx / 1.10.3
  • Ferramentas adicionais: Nginx Amplify Agent, PM2 2.9.2
por Ram Babu S 08.04.2018 / 04:30

2 respostas

2

Verifique se existe algum serviço usando a porta 80.

netstat -plnt | grep :80

Isto irá mostrar u que está sendo executado na porta 80

    
por 08.04.2018 / 05:11
0

A razão pela qual isso está ocorrendo é porque a porta 80 é utilizada atualmente e pode muito bem ser a última instância nginx que não desligou corretamente.

Você pode verificar sua configuração e teste do nginx antes de iniciar o serviço nginx.

Deve fornecer resultados bem-sucedidos no teste.

    
por 09.04.2018 / 18:17

Tags