Как сделать реверс для временного url?
У меня есть url источника domain.ex/dir/video.mp4
У меня есть временный url domain.ex/vlink/temp.mp4
, который мне нужно "подключить" к источнику domain.ex/dir/video.mp4
Один и тот же домен. Но файлы имеют разные имена, video.mp4 != temp.mp4
Я использую nginx
для обслуживания исходного url
location /dir/ {
alias /media/videos/;
}
Мой текущий urls.py
path('vlink/<str:temp>', views.vlink, name='vlink'),
view.py
def vlink(request, temp):
# drop extension mp4
s = temp.split('.')[0]
# I retrieve original file name
vid = TmpUrl.objects.filter(tmp_url = s).values('orig').first()
v = vid['orig']
the_url = '/dir/'+v+'.mp4'
return redirect(the_url)
template.html
<video>
<source src="/vlink/{{vid}}.mp4" type="video/mp4">
</video>
Мне не нужен простой редирект. Мне нужно скрыть исходный url.
Что мне нужно: когда пользователь нажимает play, браузер показывает tmp url и воспроизводит видео без перенаправления на источник.
Как это сделать?
Наконец, я нашел решение. Это внутренний редирект в Nginx + X-Accel-Redirect в Django.
views.py
def vlink(request, temp):
s = temp.split('.')[0]
vid = TmpUrl.objects.filter(tmp_url = s).values('orig').first()
v = vid['orig']
the_url = '/dir/'+v+'.mp4'
response = HttpResponse(status=200)
response['Content-Type'] = 'video/mp4'
response['X-Accel-Redirect'] = the_url
return response
nginx.conf
location /dir/ {
internal;
alias /media/videos/;
}