Primeiro, quando não há outra configuração no nginx, ele simplesmente lê o arquivo do sistema de arquivos e o envia para o cliente via conexão TCP.
Então, no seu caso, se você tivesse um bomb.py
no seu diretório de mídia, seus usuários simplesmente receberiam o arquivo, ele não seria executado.
Em segundo lugar, seu script de upload deve verificar os tipos de arquivo de upload permitidos, para que nenhum desses arquivos possa ser carregado.
Finalmente, uma resposta para sua pergunta real. Você pode fornecer uma diretiva location
mais específica para o diretório de mídia, que permite que apenas algumas extensões sejam processadas com isso. Outras solicitações passam pela diretiva location /
.
location ~* /media/[^\.]+\.(gif|jpg|png)$ {
....
}
Esta diretiva de localização servirá arquivos através do bloco somente se o nome do arquivo estiver no diretório /media/
, tiver pelo menos um caractere que não seja .
e tenha uma extensão de gif / jpg / png.