繁体   English   中英

nginx视频流统计

[英]nginx video streaming statistics

我正在使用ngx_http_mp4_module从服务器流式传输视频。 我有一台可以被多个域访问的服务器。

我使用以下配置nginx:

location /content/ {
    mp4;
    mp4_buffer_size       1m;
    mp4_max_buffer_size   5m;
}

我将所有视频存储在服务器中的/ content文件夹下,并通过url访问它们: http : //example.com/content/testvideo.mp4

由于我可以访问具有多个域的服务器,因此可以通过访问以下网站观看同一视频

http://mydomain1.com/content/testvideo.mp4

要么

http://mydomain2.com/content/testvideo.mp4

问题是:如何记录观看视频的网址以及多少秒的统计信息?

设置包括$host$request_time变量的日志记录格式。

在该location指令中使用该日志记录格式。

它在Nginx网站上有完整的文档,以及可用于包括在日志中的变量列表,以下变量属于http块,并且是标准combined日志格式的修改版本,并在上面加上了两个变量:

log_format streaming '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" $host $request_time';

这定义了名称为streaming的日志格式,变量$host显然是客户端请求中的主机名。 根据文档, $request_time是:

以毫秒为单位请求处理时间,以毫秒为单位; 从客户端读取第一个字节到将最后一个字节发送到客户端后的日志写入之间经过的时间

如果您的视频是CBR,则还可以使用$bytes_sent记录传输到客户端的总数据,并计算以这种方式传输的视频的持续时间。

一旦定义了自定义日志格式,就可以在流的位置块中为该位置的请求设置指令,以使用该格式进行日志记录,如下所示:

access_log /path/to/log/video.log streaming;

这只是写入日志的路径, streaming是用于此日志的日志格式。

现在,Nginx将创建一个日志文件,其中包含对该位置的所有请求,无论客户端访问的域是什么。

也许您希望每个域使用单独的日志? 没问题,只需将$host变量用作access_log指令中路径的一部分

access_log /path/to/log/$host-video.log streaming;

现在,每个域都将拥有自己的日志。 example.com-video.log,example.net-video.log等

也许两者都想要? 没问题,您可以在同一级别内指定多个access_log指令:

access_log /path/to/log/video.log streaming;
access_log /path/to/log/$host-video.log streaming;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM