Como Corrigir o Erro 403 Forbidden do Nginx ao Servir Arquivos Estáticos?

Publicado 17 de outubro de 2024

Problema: Erro 403 Forbidden do Nginx para Arquivos Estáticos

O erro 403 Forbidden do Nginx ocorre ao tentar servir arquivos estáticos, bloqueando o acesso aos recursos do site. Esse problema pode afetar o funcionamento de um site, pois impede que os usuários vejam imagens, folhas de estilo ou outros conteúdos estáticos.

Diagnosticando o Problema

Verificando a configuração do Nginx

Para corrigir o erro 403 Forbidden do Nginx, revise sua configuração do Nginx. Verifique o bloco de localização para arquivos estáticos no seu arquivo nginx.conf ou no arquivo do bloco do servidor. Esse bloco define como o Nginx lida com solicitações de conteúdo estático.

Exemplo de um bloco de localização:

location /static {
    root /var/www/mysite;
    try_files $uri =404;
}

Verifique se a diretiva root ou alias está configurada corretamente. A diretiva root define o diretório base para as solicitações, enquanto a diretiva alias define um caminho diferente para a localização especificada.

Dica: Solução de problemas na configuração do Nginx

Use o comando nginx -t para testar sua configuração do Nginx em busca de erros de sintaxe. Esse comando verifica os arquivos de configuração e relata quaisquer problemas, ajudando você a identificar e corrigir problemas rapidamente.

Examinando as permissões de arquivos e diretórios

Em seguida, verifique as permissões de arquivos e diretórios do seu conteúdo estático. Use o comando ls -l para ver a propriedade e as permissões de arquivos e diretórios.

Exemplo:

ls -l /var/www/mysite/static

Confirme se o usuário do Nginx (geralmente www-data ou nginx) tem acesso de leitura aos arquivos e permissão de execução para os diretórios. A permissão de execução em diretórios permite que o usuário acesse o conteúdo do diretório.

Para encontrar o usuário do Nginx, procure no arquivo nginx.conf pela diretiva user ou use este comando:

ps aux | grep nginx

Se as permissões estiverem incorretas, pode ser necessário alterá-las usando os comandos chmod e chown.

Soluções para Corrigir o Erro 403 Forbidden

Ajustando a configuração do usuário do Nginx

Para corrigir o erro 403 Forbidden, pode ser necessário alterar a diretiva user no arquivo nginx.conf. Essa diretiva define qual usuário o Nginx executa, afetando seu acesso a arquivos e diretórios.

  1. Abra o arquivo nginx.conf (geralmente em /etc/nginx/):
sudo nano /etc/nginx/nginx.conf
  1. Encontre a diretiva user perto do topo do arquivo. Pode ser algo como:
user www-data;
  1. Se necessário, altere o usuário para corresponder ao proprietário dos seus arquivos estáticos. Por exemplo:
user seu_nome_de_usuario;
  1. Salve o arquivo e saia do editor.

  2. Reinicie o Nginx para aplicar as alterações:

sudo systemctl restart nginx

Dica: Verificar o usuário do Nginx

Para verificar qual usuário está executando o Nginx, use o comando:

ps aux | grep nginx

Isso mostrará os processos em execução do Nginx e o usuário associado a cada processo.

Corrigindo permissões de arquivos e diretórios

Ajuste a propriedade e as permissões dos seus arquivos estáticos para permitir que o Nginx os acesse:

  1. Altere a propriedade dos arquivos estáticos para o usuário do Nginx:
sudo chown -R nginx:nginx /caminho/para/seus/arquivos/estaticos
  1. Configure as permissões de leitura e execução:
sudo chmod -R 755 /caminho/para/seus/arquivos/estaticos

Este comando concede permissões de leitura e execução ao proprietário e acesso somente leitura para outros.

Atualizando o bloco de localização do Nginx

Revise e corrija a diretiva root ou alias no seu bloco de localização do Nginx:

  1. Abra o arquivo de configuração do bloco do servidor:
sudo nano /etc/nginx/sites-available/seu_site
  1. Encontre o bloco de localização para arquivos estáticos e verifique a diretiva root ou alias:
location /static {
    root /var/www/seu_site;
    # ou
    alias /caminho/para/seus/arquivos/estaticos;
}
  1. Certifique-se de que o caminho para seus arquivos estáticos esteja correto.

  2. Salve o arquivo e saia do editor.

  3. Teste a configuração do Nginx:

sudo nginx -t
  1. Se o teste for bem-sucedido, recarregue o Nginx:
sudo systemctl reload nginx