Como Corrigir o Erro Nginx '(13: Permissão negada) durante a conexão com o upstream'

Publicado 27 de agosto de 2024

Problema: Erro '(13: Permissão negada)' do Nginx

Ao usar o Nginx como servidor web ou proxy reverso, você pode ver a mensagem de erro "(13: Permissão negada) ao conectar ao upstream." Esse erro geralmente ocorre quando o Nginx não tem permissões para acessar ou se comunicar com o servidor upstream. Isso pode afetar o funcionamento do seu site e impedir que o conteúdo chegue aos usuários.

6 Soluções para Resolver o Problema de Permissão Negada do Nginx

1. Verificar as Permissões do Usuário do Nginx

Para corrigir o erro de permissão negada do Nginx, verifique as permissões do usuário do Nginx. Examine o arquivo nginx.conf para ver as configurações de usuário e grupo. Certifique-se de que o usuário do Nginx possa acessar os arquivos e diretórios. Pode ser necessário alterar as permissões de arquivos e diretórios com o comando chmod.

2. Examinar as Configurações do SELinux

O SELinux pode impedir o Nginx de acessar arquivos ou fazer conexões de rede. Verifique o status do SELinux e altere os valores booleanos, se necessário. Use o comando 'setsebool' para alterar essas configurações. Você pode ativar o valor booleano do SELinux para conexão de rede do httpd com:

setsebool httpd_can_network_connect on -p

3. Revisar os Arquivos de Configuração do Nginx

Verifique seu arquivo nginx.conf em busca de erros. Examine as configurações do servidor upstream. Certifique-se de que todos os caminhos e endereços de servidor estejam corretos e que o Nginx possa acessar esses recursos.

4. Analisar os Logs de Erro do Nginx

Os logs de erro do Nginx podem ajudar a identificar o problema de permissão negada. Examine os logs de erro, geralmente em /var/log/nginx/error.log, procurando mensagens de permissão negada. Use o comando grep para encontrar esses erros:

grep denied /var/log/nginx/error.log

5. Investigar as Regras do Firewall

Seu firewall pode estar bloqueando as conexões do Nginx. Verifique as regras do firewall e certifique-se de que elas permitam que o Nginx se conecte às portas e endereços IP necessários. Pode ser necessário adicionar novas regras ou modificar as existentes para dar ao Nginx o acesso adequado.

6. Verificar a Disponibilidade do Servidor Upstream

Verifique se seus servidores upstream estão funcionando e acessíveis. Tente se conectar a esses servidores a partir do seu servidor Nginx para descartar problemas de rede ou configuração. Você pode usar telnet ou curl para testar essas conexões e garantir que os servidores upstream estejam respondendo.

Se ainda estiver tendo problemas, você pode ver um erro 502 Bad Gateway ao se conectar ao upstream. Nesse caso, verifique seu servidor de aplicação e certifique-se de que ele esteja funcionando e configurado corretamente.

Lembre-se, se você alterar as configurações do SELinux, pode ser necessário executar:

audit2allow -m mynginx
sudo semodule -i mynginx.pp

Isso cria e instala um módulo de política personalizado com base nos logs de auditoria.

Passos Adicionais de Solução de Problemas para Erros de Permissão Negada do Nginx

Usando audit2allow para Gerar Políticas SELinux

A ferramenta audit2allow ajuda a criar políticas SELinux quando as políticas padrão não funcionam. Para usá-la:

  1. Verifique os logs do SELinux em busca de ações negadas:

    grep "denied" /var/log/audit/audit.log
  2. Use o audit2allow para gerar uma política:

    audit2allow -m mynginx sudo semodule
  3. Aplique a nova política:

    mynginx sudo semodule -i mynginx.pp

Esse processo cria e instala um módulo SELinux baseado em ações negadas recentes.

Ajustando a Propriedade e Permissões de Arquivos

Corrigir a propriedade e as permissões dos arquivos ajuda a resolver problemas de permissão do Nginx:

  1. Defina a propriedade dos arquivos e diretórios do Nginx:

    chown -R nginx:nginx /var/www/html
  2. Defina as permissões:

    chmod 755 /var/www/html
    chmod 644 /var/www/html/*

Esses comandos dão ao usuário e grupo do Nginx a propriedade dos arquivos web e definem as permissões de leitura, escrita e execução. Altere os caminhos conforme necessário para sua configuração.