工作中视频涉及视频三级代理的转发,使用nginx代理转发m3u8的视频和直播时发现,普通的播放器后面的ts段落文件,无法在url地址后面添加指定参数所以找到了一种方案将参数提到前面
Url地址示例:http://192.168.1.21/192.168.1.61:80/111.m3u8
location ~* \.(m3u8|ts|aac|mp4)$ {
# 代理mp4时需要这三行
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_no_cache $http_range $http_if_range;
if ( $uri ~ (\d+)\.(\d+)\.(\d+)\.(\d+):(\d+)(.*)){
set $Real $1.$2.$3.$4:$5;
set $Realpa $6;
proxy_pass http://$Real$Realpa;
}
}
当前使用了nginx的url正则、变量赋值和请求转发。经测试,上面的请求可以代理多级,只需要在后面拼上IP+端口即为下一层,上面的请求格式也可以代理mp4、flv等多种格式