nginx internal 语法,可以让指定 location 必须被重定向访问
比如视频播放场景:
location /videos {
internal;
root /nas/videos;
}
当访问:http://domain/videos/test.mp4
无法直接访问。
正确的访问方法是:访问到某个 api 接口,然后接口返回 X-Accel-Redirect
新建video.php
:
<?php
/**
* 访问 /video.php 则实际访问的是 /videos/test.mp4.
*
* 由此,可以在 php 里实现复杂的认证逻辑比如播放次数、ip、登录权限、用户身份等等。
*/
//TODO 做一些判断和限制
//最后跳转到资源
header("X-Accel-Redirect: /videos/test.mp4");
新建video.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<video width="320" height="240" controls> <source src="video.php" type="video/mp4"></video>
</body>
</html>
访问 http://domain/video.html
效果如下
注意:
1、internal 配置的新的root路径要确保url和root的正确
2、视频格式与浏览器的支持
当前, <video> 元素支持三种视频格式: MP4, WebM, 和 Ogg:
浏览器 MP4 WebM Ogg
Internet Explorer YES NO NO
Chrome YES YES YES
Firefox YES YES YES
Safari YES NO NO
Opera YES (从 Opera 25 起) YES YES
MP4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件
WebM = 带有 VP8 视频编码和 Vorbis 音频编码的 WebM 文件
Ogg = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件
视频格式
格式 MIME-type
MP4 video/mp4
WebM video/webm
Ogg video/ogg
网友评论