Как сделать реверс для временного 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/;
          }
Вернуться на верх