我有源urldomain.ex/dir/video.mp4
我有一个临时urldomain.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。
我需要的:当用户点击播放,浏览器显示tmp url和播放vid没有重定向到源。
如何做到这一点?
最后,我找到了解决办法。Nginx的内部重定向+ Django的X-Accel-Redirect。
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/;
}