设置 nginx 以控制视频流的访问

设置 nginx 以控制视频流的访问

我正在尝试创建一个应用程序,其核心是在基于 Meteor/nodejs 的学习环境中显示视频。问题在于流媒体本身。正如许多页面所述,node 不适合提供静态内容。

所以我的想法是让我的 nginx 服务器提供视频。

问题是:这些视频不应该公开,只有有权观看该视频的登录用户才能访问。

有没有办法配置 nginx,以便只有登录到我的应用程序并有权观看视频的用户才能观看视频?

最好的方法是什么?

答案1

这确实是正确的做法。

包括auth_request通过使用标志重新编译 nginx 来删除模块(默认情况下不构建)--with-http_auth_request_module

有了它,您将能够使用发送到您的应用程序的子请求的 HTTP 代码来授予或拒绝对内容的访问。

基本上,您将在应用程序中编写一个控制器,以响应身份验证检查请求,并使用 HTTP 回复200以允许视频访问或使用401/403禁止视频访问。

location /video {
    auth_request /access;
    [ ... ]
}

location = /access {
    internal;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_set_header Content-Length "";
    proxy_set_header X-Original-URI $request_uri;
    proxy_pass_request_body off;
    proxy_pass http://my_server_app:port/my_controller;
}

相关内容