Servindo arquivos com nginx e django

2

Estou tentando veicular arquivos protegidos com nginx usando o cabeçalho X-Accel-Redirect seguindo este tutorial (e muitos outros).

caminho físico: /home/media/file.pdf

url: example.com/media/file.pdf

configuração nginx:

location /media/ {
    internal;
    alias /home/;
}

No django eu tenho um middleware, que checa se o usuário é autenticado e, em caso afirmativo, usa o X-Accel-Redirect para o nginx para passar o arquivo:

response["X-Accel-Redirect"] = request.path

Quando tento acessar o arquivo, estou recebendo um erro 404 (o caminho do arquivo solicitado está OK no log de acesso). Parece-me que o nginx não passará o pedido para o django e acabará com o erro 404.

Alguma ideia do que eu posso estar fazendo errado? Existe uma boa maneira de depurar isso? Agradecemos antecipadamente.

    
por vitush93 22.08.2016 / 11:37

1 resposta

2

O problema é a diferença entre alias e root . Com alias como você definiu, o URI /media/file.pdf será mapeado para a localização física /home/file.pdf .

Você precisa usar root :

location /media/ {
    internal;
    root /home;
}

Veja este e stis para detalhes.

    
por 22.08.2016 / 12:45

Tags