nginx que serve arquivos estáticos; apache django; arquivo seguro do apache para o nginx?

1

Eu sirvo todos os arquivos estáticos (/ static / e / media /) via nginx e todos os outros pedidos são roteados para o apache usando o mod_wsgi para usar o django. O nginx atua como proxy através do Apache / mod_wsgi. Tanto quanto eu sei que esta é a maneira recomendada, que um arquivo estático deve ser servido separadamente.

Agora eu tenho a seguinte situação, um usuário quer baixar um arquivo, mas eu preciso primeiro verificar se o usuário tem permissão para baixar este arquivo (que não está em / static / nem / media /, obviamente, senão seria público). Isso significa que o pedido deve ir primeiro ao django. Suponho que a prática recomendada aqui é a de não deixar o apache exibir o arquivo, portanto, se o usuário tiver autorização para fazer o download do arquivo, existe mesmo assim que posso dizer ao apache para usar o nginx para exibir esse arquivo?

    
por Clash 17.02.2013 / 21:20

2 respostas

2

Primeiro de tudo, você não precisa usar o nginx e o apache. Um deles é suficiente e pode fazer conteúdo estático e dinâmico de forma adequada. Eu aconselharia o nginx por causa da parte dois da sua pergunta.

Se você quiser o controle de acesso baseado em django em seus arquivos, use X-SendFile para diga ao servidor da Web qual arquivo deve ser exibido.

    
por 17.02.2013 / 21:23
1

Como nginx é o proxy reverso, ele realmente recebe a resposta antes de enviá-la ao usuário. Eu configurei manualmente o cabeçalho do X-Accel-Redirect do django e ele funcionou perfeitamente como eu queria. link

    
por 19.02.2013 / 10:37