Como servir o diretório de arquivos estáticos sobre HTTP usando o NGINX

1

Problema

Um servidor com NGINX possui um diretório com arquivos que precisa ser exibido em HTTP.

O diretório está localizado em (example): / media / user / data

Pergunta

Que configuração é necessária no NGINX para servir esse diretório (e todos os seus arquivos e subpastas) sobre HTTP?

O diretório servido por HTTP deve estar totalmente acessível e qualquer usuário deve poder navegar por todo o conteúdo do diretório.

Todos os passos para configuração são necessários.

Pesquisa

Pesquisas sobre o tópico encontradas serão necessárias no arquivo padrão dentro do diretório sites-available dentro da pasta /etc/nginx , como tal:

 location /data {
    root /media/user/;
    autoindex on;
  }
}

Outro

De comentários recentes às respostas propostas:

The default file in sites-available was edited to include the directory, then the server was restarted and verified to be capable of serving by visiting 127.0.0.1 which displayed the standard nginx congratulations page. Then when attempting to access http://127.0.0.1/data the server produced a 403 Forbidden error. – Frugal Rasin

    
por Frugal Rasin 21.11.2015 / 22:39

1 resposta

2

Você pode conseguir isso editando o virtualhost Nginx existente (o padrão que você mencionou). Apenas certifique-se de que o diretório / media / user / data e todo o conteúdo dentro desse diretório seja legível pelo usuário no serviço Nginx seja iniciado (provavelmente o usuário "nginx").

Se você deseja hospedar esses arquivos em diferentes (sub) domínios, você pode criar um novo host virtual Nginx, com conteúdo como:

server {
  listen *:80;
  server_name example.com www.example.com;

  root /media/user/data;
  autoindex on;
}

Atualização: dos comentários abaixo, também foi necessário modificar as permissões do diretório para que o Nginx possa veicular o conteúdo e não retornar 403 forbiden error.

Embora as permissões do diretório /media/user/data/ fossem boas, os diretórios /media/ e /media/user/ estavam sem permissões executáveis. O problema foi resolvido com o seguinte comando:

sudo chmod o+x /media/ /media/user/

    
por 21.11.2015 / 22:49

Tags