Configure nginx para servir arquivos de subdiretórios

5

Estou configurando um sistema de servidor de arquivos muito simples. Eu instalo o nginx e configuro seu diretório raiz para /home para que ele sirva os arquivos dos diretórios home dos usuários.

No entanto, quando tento baixar arquivos via http://12.34.56.78/user1/testfile.bin com meu navegador, ele diz "403 Proibido". Quando eu me conecto a http://12.34.56.78/ com meu navegador, no entanto, ele exibe a página de índice padrão que eu coloquei em /home/ .

Como eu faço nginx servir arquivos de diretórios de usuários? por exemplo,

/home/user1

/home/user2

Additionaly, se eu quisesse excluir o diretório raiz

/home

e arquivos do sistema

.bash_history %código% %código% (digamos, todos os arquivos cujos nomes começam com um ponto)

dos arquivos sendo veiculados?

    
por Nickolai Leschov 27.04.2014 / 14:37

3 respostas

14

O Nginx não tem o direito de ler os arquivos dos usuários. E é uma péssima ideia colocar todos os seus arquivos de usuários disponíveis na Web.

Uma ideia melhor é apenas servir um diretório dedicado no diretório inicial dos usuários.

Para veicular a pasta www em cada pasta de usuário ao acessar /<USER> , use o seguinte local:

location ~ ^/(.+?)(/.*)?$ {
  alias /home/$1/www$2;
  index  index.html index.htm;
  autoindex on;
}

Você também deve permitir que o Nginx acesse este diretório.

$ chmod 0755 /home/$USER/www
    
por 27.04.2014 / 14:47
4

Muitas vezes, os erros 403 são causados por problemas de permissão. Os arquivos nos diretórios da web devem ser legíveis em todo o mundo (chmod 644 ou 664) e os diretórios devem ser legíveis e executáveis em todo o mundo (chmod 755 ou 775).

    
por 27.04.2014 / 20:02
0

Todas as respostas acima fornecem explicações válidas. O que não foi mencionado até agora, é que error 403 pode persistir, mesmo depois de configurar as permissões corretas, devido ao armazenamento em cache, dependendo das configurações de cache.

Para garantir que esse não seja o caso, restaure o cache:

rm -r /path/to/nginx/cache/*
systemctl restart nginx
    
por 12.02.2016 / 19:20