NGINX 防盗链处理 利用 internal 语法

2022-12-21  本文已影响0人  不可思议的黄老师

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 效果如下

image.png

注意:

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

上一篇下一篇

猜你喜欢

热点阅读