Como corrigir o erro '[emerg] server directive is not allowed here' no Nginx?

Publicado 8 de setembro de 2024

Problema: Erro de Diretiva de Servidor no Nginx

Ao configurar o Nginx, você pode se deparar com a mensagem de erro '[emerg] "server" directive is not allowed here'. Esse erro ocorre quando você coloca a diretiva server no lugar errado no arquivo de configuração do Nginx. Isso significa que o Nginx não pode usar a configuração devido a esse erro, o que pode impedir o servidor web de iniciar ou recarregar corretamente.

Soluções para Corrigir o Erro '[emerg] "server" directive is not allowed here'

Estrutura Correta do Arquivo de Configuração do Nginx

Para corrigir o erro '[emerg] "server" directive is not allowed here', você precisa estruturar corretamente seu arquivo de configuração do Nginx. O bloco server deve estar dentro de um bloco http. Veja como fazer:

  1. Abra o arquivo de configuração principal do Nginx (/etc/nginx/nginx.conf).
  2. Localize o bloco http. Se estiver faltando, adicione-o:
http {
    # Seus blocos server vão aqui
}
  1. Coloque seu bloco server dentro do bloco http:
http {
    server {
        # Sua configuração de servidor
    }
}
  1. Verifique a estrutura do seu arquivo nginx.conf para garantir que ele siga este layout:
events {
    # Configurações de contexto de eventos
}

http {
    # Configurações globais de HTTP

    server {
        # Bloco de servidor 1
    }

    server {
        # Bloco de servidor 2
    }
}

Usando Diretivas Include para Configuração Modular

Você pode usar diretivas include para dividir sua configuração em vários arquivos:

  1. No seu arquivo nginx.conf principal, adicione uma declaração include dentro do bloco http:
http {
    include /etc/nginx/sites-enabled/*;
}
  1. Crie arquivos de configuração separados para cada bloco server no diretório /etc/nginx/sites-available/.

  2. Para ativar uma configuração, crie um link simbólico de sites-available para sites-enabled:

sudo ln -s /etc/nginx/sites-available/sua-config /etc/nginx/sites-enabled/

Esse método mantém seu arquivo de configuração principal limpo e facilita o gerenciamento de múltiplos blocos de servidor.

Verificando a Sintaxe e Testando a Configuração

Antes de aplicar alterações à sua configuração do Nginx, sempre teste:

  1. Use o comando nginx -t para verificar erros de sintaxe:
sudo nginx -t
  1. Se houver erros, o comando mostrará o número da linha e o arquivo onde está o problema.

  2. Corrija quaisquer problemas e execute o teste novamente até obter uma mensagem de sucesso.

  3. Depois que o teste passar, recarregue o Nginx para aplicar as alterações:

sudo systemctl reload nginx