我正在尝试创建一个应用程序,其核心是在基于 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;
}