Poupe até 53% em Servidores VPS, escolha agora. Oferta limitada.

Solucionar erro 'Address family not supported' no Nginx Rocky 9

11 min de leitura  ·  Guia técnico

O erro "Address family not supported by protocol" no Nginx do Rocky Linux 9 ocorre quando o servidor web tenta abrir um socket IPv6 (listen [::]:80) em um kernel onde o suporte ao protocolo IPv6 foi desativado. A solução rápida é remover as diretivas de listen IPv6 do nginx.conf ou reabilitar o módulo IPv6 no kernel. Veja abaixo como diagnosticar a causa raiz e aplicar a correção definitiva.

Pré-requisitos para corrigir o erro no Nginx

  • Servidor com Rocky Linux 9 (também aplicável a AlmaLinux 9 e RHEL 9)
  • Acesso root via SSH ou usuário com privilégios sudo
  • Nginx 1.20 ou superior instalado (versão estável recomendada: Nginx 1.26)
  • Editor de texto em linha de comando (vim, nano ou similar)
  • Conhecimento básico de systemd e arquivos de configuração Linux
  • Acesso ao console serial ou KVM, caso perca conectividade durante o teste

Diagnóstico do erro Address family not supported no Nginx

Antes de aplicar qualquer correção, é fundamental confirmar a origem do problema. O erro normalmente aparece ao executar systemctl start nginx ou ao rodar o teste de configuração. A mensagem típica nos logs é clara sobre qual socket falhou:

nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)

O número 97 corresponde ao código EAFNOSUPPORT retornado pelo kernel Linux. Para reproduzir o erro de forma controlada, execute o teste de sintaxe do Nginx:

sudo nginx -t

Output esperado quando o IPv6 está desabilitado e o nginx.conf tenta usar:

nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
nginx: configuration file /etc/nginx/nginx.conf test failed

Agora, verifique o estado real do IPv6 no kernel do Rocky Linux 9 com três comandos complementares:

cat /proc/sys/net/ipv6/conf/all/disable_ipv6
sysctl net.ipv6.conf.all.disable_ipv6
ip -6 addr show

Se o retorno dos dois primeiros for 1 e o terceiro comando não listar nenhuma interface com endereço IPv6, o protocolo está totalmente desativado. Verifique também os parâmetros de boot do kernel com cat /proc/cmdline procurando por ipv6.disable=1, que é a forma mais agressiva de desligar o suporte ao protocolo.

As três causas mais frequentes do problema no Rocky Linux 9

Causa 1: IPv6 desabilitado via GRUB

Muitos provedores de VPS entregam imagens Rocky Linux 9 com ipv6.disable=1 adicionado em /etc/default/grub. Isso impede que o módulo seja carregado pelo kernel desde o boot, tornando impossível abrir qualquer socket IPv6, independentemente de configurações posteriores no sysctl.

Causa 2: sysctl ajustado em runtime

Em servidores hardenizados, o arquivo /etc/sysctl.conf ou arquivos em /etc/sysctl.d/ definem net.ipv6.conf.all.disable_ipv6=1. O módulo do kernel é carregado, mas o stack IPv6 é desligado logicamente, gerando o mesmo erro no Nginx.

Causa 3: ambientes de container e virtualização

Containers Docker, Podman e LXC frequentemente herdam um namespace de rede sem suporte IPv6 do host. Mesmo que o host tenha IPv6 ativo, o container pode iniciar sem ele, fazendo com que o Nginx interno falhe ao tentar bind no socket [::]:80.

Solução 1: remover as diretivas listen IPv6 do nginx.conf

Esta é a abordagem mais rápida e segura quando você não precisa de IPv6. O Nginx continuará servindo normalmente via IPv4. Localize todos os arquivos que contêm o listen IPv6:

sudo grep -rn "listen \[::\]" /etc/nginx/

Output esperado (exemplo):

/etc/nginx/nginx.conf:38:    listen       [::]:80 default_server;
/etc/nginx/conf.d/site.conf:5:    listen [::]:443 ssl;

Edite cada arquivo identificado e comente ou remova as linhas com [::]:. Um bloco server típico ficaria assim após a correção:

server {
    listen 80;
    # listen [::]:80;
    server_name exemplo.com.br;
    root /var/www/html;
}

Valide a sintaxe e recarregue o serviço:

sudo nginx -t
sudo systemctl reload nginx

Output esperado:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Solução 2: reabilitar o IPv6 no kernel do Rocky Linux 9

Se a sua aplicação precisa de IPv6 — por exemplo, para indexação em buscadores que priorizam dual-stack ou para clientes em redes IPv6-only — reabilite o suporte no kernel. Primeiro, edite o GRUB:

sudo vi /etc/default/grub

Localize a linha GRUB_CMDLINE_LINUX e remova qualquer ocorrência de ipv6.disable=1. Em seguida, regenere a configuração:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Agora ajuste o sysctl para garantir que o IPv6 fique ativo em runtime. Edite ou crie /etc/sysctl.d/99-ipv6.conf:

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

Aplique as mudanças imediatamente:

sudo sysctl --system

Atenção: a alteração no GRUB só tem efeito após reinicialização. Programe a janela de reboot e tenha acesso ao console KVM do provedor, pois mudanças em parâmetros de kernel podem afetar a inicialização da rede. Para revisar boas práticas pós-reboot, consulte nosso material sobre Dicas de Otimização de Servidores Linux.

sudo reboot

Após retornar, verifique:

ip -6 addr show
sudo systemctl start nginx
sudo systemctl status nginx

Solução 3: corrigir o erro em containers Docker e Podman

Quando o Nginx roda dentro de container e o host está com IPv6 desativado, a melhor prática é configurar o container para usar apenas IPv4. Edite o arquivo daemon.json do Docker em /etc/docker/daemon.json para ativar IPv6 globalmente, se necessário:

{
  "ipv6": true,
  "fixed-cidr-v6": "fd00::/80"
}

Reinicie o serviço Docker:

sudo systemctl restart docker

Alternativamente, ao subir o container, force os parâmetros de rede:

docker run -d --name web \
  --sysctl net.ipv6.conf.all.disable_ipv6=0 \
  -p 80:80 nginx:1.26

Para Podman, a sintaxe é equivalente. Se a aplicação não exige IPv6, ajuste o nginx.conf dentro da imagem para escutar apenas em 0.0.0.0:80, evitando dependência do stack IPv6 do container.

Problemas comuns e como resolver

Sintoma: Nginx falha apenas após reboot

Causa: parâmetros de kernel em /etc/default/grub ou arquivos em /etc/sysctl.d/ desativam o IPv6 antes do Nginx iniciar, mesmo que em runtime tudo pareça correto antes da reinicialização.
Solução: revise /proc/cmdline após o reboot e remova flags como ipv6.disable=1. Garanta que os arquivos sysctl tenham disable_ipv6=0 e regenere o GRUB com grub2-mkconfig.

Sintoma: erro persiste mesmo após remover listen [::]:80

Causa: existem múltiplos arquivos de virtual hosts em /etc/nginx/conf.d/ e /etc/nginx/sites-enabled/ que ainda referenciam IPv6.
Solução: rode grep -rn "\[::\]" /etc/nginx/ para localizar todas as ocorrências e comente cada uma. Inclua também arquivos incluídos via include no nginx.conf principal.

Sintoma: Nginx inicia mas não responde via IPv6 público

Causa: o servidor tem IPv6 habilitado no kernel, mas o firewalld ou nftables bloqueia a família inet6. Em alguns casos, o provedor não roteia IPv6 até a VPS.
Solução: verifique regras com sudo firewall-cmd --list-all e libere a porta. Para guia detalhado de firewall, veja a configuração de servidor Linux para hospedagem.

Sintoma: erro retorna após atualização do sistema

Causa: pacotes do Rocky Linux 9 podem reescrever arquivos em /etc/sysctl.d/ ou alterar templates do Nginx durante o dnf upgrade.
Solução: mantenha um arquivo personalizado com prefixo numérico alto (ex.: 99-custom-ipv6.conf) para sobrescrever defaults. Use rpm -V nginx para detectar arquivos modificados após updates.

Perguntas frequentes sobre o erro Address family not supported no Nginx

O que significa o erro 'Address family not supported by protocol' no Nginx?

Esse erro indica que o Nginx tentou abrir um socket em uma família de endereços (geralmente IPv6) que o kernel ou o sistema não tem habilitado. É comum em VPS onde o módulo IPv6 foi desativado no boot ou em containers que iniciam sem suporte ao protocolo. A correção envolve remover o listen IPv6 ou reabilitar o módulo no kernel.

Como saber se meu servidor Rocky Linux 9 tem IPv6 habilitado?

Execute o comando ip -6 addr show para listar interfaces com endereços IPv6 ou verifique cat /proc/sys/net/ipv6/conf/all/disable_ipv6. Se o retorno for 1, o IPv6 está desativado no kernel. Você também pode checar com sysctl net.ipv6.conf.all.disable_ipv6 para confirmar o estado atual.

Posso simplesmente remover o listen [::]:80 do nginx.conf?

Sim, é a solução mais rápida quando você não precisa de IPv6 no servidor. Basta comentar ou remover as linhas listen [::]:80; e listen [::]:443 ssl; do arquivo de configuração, depois rodar nginx -t e recarregar o serviço. Isso elimina o erro sem afetar conexões IPv4.

Por que o erro aparece apenas depois de reiniciar o servidor?

Algumas configurações de boot ou parâmetros do GRUB desativam o IPv6 com ipv6.disable=1 antes do Nginx iniciar. Após o reboot, o módulo não é carregado e o socket IPv6 falha. Verifique /etc/default/grub e o arquivo /etc/sysctl.conf para identificar onde o IPv6 foi desativado.

O erro pode aparecer em containers Docker ou Podman?

Sim, é frequente em containers que herdam configuração de rede sem suporte IPv6 do host. Para resolver, inicie o container com --sysctl net.ipv6.conf.all.disable_ipv6=0 ou ajuste o nginx.conf interno do container para escutar apenas em IPv4. Verifique também o daemon.json do Docker para habilitar IPv6 globalmente.

Conclusão

  • Diagnostique sempre com nginx -t e cat /proc/sys/net/ipv6/conf/all/disable_ipv6 antes de aplicar qualquer mudança no nginx.conf.
  • Se IPv6 não for necessário, remova as diretivas listen [::]:80 de todos os arquivos em /etc/nginx/ — é a correção mais rápida e estável no Rocky Linux 9.
  • Para reabilitar IPv6, atue em três camadas: GRUB, sysctl e firewall, validando cada uma após o reboot para evitar perda de conectividade.

Leia também

Precisa de ajuda com Nginx no Rocky Linux 9?

Nossos VPS Linux entregam Rocky Linux 9 pré-configurado com stack de rede dual-stack e suporte técnico 24/7 para diagnóstico de erros como o "Address family not supported". Reduza o tempo gasto em troubleshooting e foque na sua aplicação.

Conheça os planos de VPS Linux da AviraHost

  • 0 Os usuários acharam isso útil
  • nginx, rocky-linux-9, ipv6, troubleshooting, vps-linux, AviraHost
Esta resposta foi útil?

Artigos Relacionados

Instalando painel de gerenciamento de hospedagem VirtualMin.

O virtualmin é um painel de gerenciamento de hospedagem de sites gratuito, que é suportado por...

Como usar a ferramenta oficial de acesso remoto do Windows no PC e celular

1. Pelo menu Iniciar, acesse os “Acessórios do Windows” e abra o “Conexão de Área de Trabalho...

Como acessar o painel de gerenciamento dos meus Serviços.

Para acessar o painel de gerenciamento do seu serviço basta seguir o passo á passo abaixo.   1....

Compreendendo o Servidor VPS: O que é e Como Funciona!

Um servidor VPS (Virtual Private Server) é uma solução de hospedagem na qual um servidor físico é...

Como trocar a senha do usuário root do servidor VPS ou Dedicado.

Para trocar a senha do usuário root em um servidor VPS da AviraHost, você pode seguir os...