我正在尝试获取 nginx 作为 rtmp 服务器的统计信息,下面是我的配置文件,但我得到了 403http://ip:8080/stat.xsl(也尝试过http://ip/stat.xsl结果是 404,并且http://ip:8080/stat/stat.xsl这会产生一个空白页,没有错误)。
我从这里复制了这些设置:https://github.com/arut/nginx-rtmp-module
不知道哪里出了问题...
我需要找到一种方法来从 rtmp 服务器提取统计数据,或者至少找到一种获取活动连接的方法。
谢谢。
rtmp {
server {
listen 1935;
chunk_size 4000;
allow play all;
application live {
allow play all;
live on;
hls on;
hls_nested on;
hls_path /HLS/hls;
hls_fragment 10s;
record off;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 8080;
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /HLS/hls;
add_header Cache-Control no-cache;
}
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /root/nginx-rtmp-module-dev/stat.xsl/;
}
}
}
更新:当我访问http://IP:8080/stat/stat.xsl我在 Chrome 控制台中看到了这一点,我认为这是相关的:Resource interpreted as Stylesheet but transferred with MIME type text/xml: http://IP:8080/stat/stat.xsl
答案1
我在 RTMP 统计数据方面也遇到了类似的问题。
首先,stat.xsl 的根位置必须是保存 stat.xsl 的目录。根位置不能是 stat.xsl 的直接路径。就我而言,我将其放在:/var/www/stat.xsl
。请参阅位置/stat.xsl以下:
其次,我添加了“允许所有人”以允许任何人查看统计信息页面。我还添加了刷新标头,这将导致统计信息每三秒更新一次。
这是我的文件的内容/etc/nginx/sites_available/default
:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name localhost;
location / {
try_files $uri $uri/ =404;
index index.html index.htm index.nginx-debian.html;
}
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
# Allow access from any visitor
allow all;
# Live updates for the stat page
add_header Refresh "3; $request_uri";
}
location /stat.xsl {
root /var/www/;
}
}
然后,当您访问时,http://<hostname>/stat
您将看到每个配置流显示的 RTMP 统计数据。
答案2
/root/nginx-rtmp-module-dev/stat.xsl/stat.xsl
然后检查 及其父目录的权限。您会发现/root
Web 服务器无法读取它,因此会收到 403 错误。
要修复此问题,请将文件移动到适当位置,并更改 nginx 配置以匹配。
答案3
我认为问题肯定已经解决了。但是我也曾为同样的问题而苦恼,并找到了解决方案,即我们需要使用路由 URL 而不是文件名来访问统计信息。例如:example.com/stat,然后 stat 将重定向到实际页面。在那里我们可以看到包含 RTMP 统计信息的表格。
答案4
复制nginx-rtmp-stat.xsl到你的 nginx-rtmp html 文件夹。
将 stat.xsl 路径设置为 nginx-rtmp html 文件夹
location /stat.xsl {
root /path-to-nginx-rtmp-html-folder/;
}