Есть такая задача для процесса разработки (еще не деплой):
При переходе по ссылке, допустим
127.0.0.1:8000/servefile/%id%, необходимо отдать файл/ссылку с фс (для скачивани или же для аудио-плеера soundmanager2), но прежде чем отдать респонс, надо проверить что пользователь имеет доступ файлику (т.е. что бы не мог обращаться к чужим файлам).
Я смотрю в сторону nginx и заголовков респонса X-Accel-Redirect. На данном этапе я не хочу использовать встроенный в джангу веб-сервер (runserver), дабы было проще отлаживаться.
Как правильно организовать такой доступ (gett url -> django view -> nginx static serve)? Через response-redirect?
Пока пытаюсь использовать вот такую конструкцию:
view:
def get(self, request, *args, **kwargs):
audio_file = self.get_object()
ogg_file_version = audio_file.audiofileversion_set.filter(format="ogg")
if ogg_file_version.exists():
ogg_file_version = ogg_file_version[0]
res = HttpResponse()
res["Content-type"] = "audio/ogg"
res["X-Accel-Redirect"] = ogg_file_version.file.path
res["Content-length"] = ogg_file_version.file.size
return res
return Http404()
Конфиг nginx:
server {
listen 80;
gzip off;
expires off;
location /static/ {
add_header X-Static hit;
autoindex on;
expires off;
root /Users/andrewshkovskii/workspace/ip_pbx/;
}
location / {
proxy_pass http://localhost:8000;
rewrite ^/audiofiles/get/(\d+)/ /audiofiles/serve/$1/ last;
}
location /media/audio {
internal;
root /var/ip_pbx/users;
}
}
Но пока что получаю 404. В какую сторону копать?
Спасибо за внимание.