Zanonimizowana wersja forum tylko do odczytu
Zabezpieczenie serwera nginx na token
Code: Select all
[spoiler]#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 8080;
server_name localhost;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location / {
root html;
index index.html index.htm;
}
#statystyki
location /statystyki {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root html;
}
#zabezpieczenie na token i domenę
location /on_play {
secure_link $arg_token,$arg_e;
secure_link_md5 aaa$arg_addr$arg_e;
if ($secure_link = "") {
return 401;
}
if ($secure_link = "0") {
return 402;
}
#sprawdzenie adresu domeny
if ($arg_pageurl !~* (http://188.68.238.174/)) {
return 403;
}
return 200;
}
}
}
rtmp {
server {
listen 1935;
ping 5s;
ping_timeout 7s;
notify_method get;
publish_notify on;
drop_idle_publisher 10s;
busy on;
application live {
live on;
idle_streams off;
#wywołanie zapytania sprawdzającego
on_play http://188.68.238.174:8080/on_play;
#maksymalna liczba osob online
max_connections 150;
}
}
}[/spoiler]
Wystarczy że dasz:
Code: Select all
FMS URL: rtmp://188.68.238.174/live/
Play path: test
Połączyło się, lecz teraz od strony www nie pokazuje streama.
view.html
view.html
Code: Select all
<!DOCTYPE html>
<html>
<head>
<title>Video.js | HTML5 Video Player</title>
<!-- Chang URLs to wherever Video.js files will be hosted -->
<link href="video-js.css" rel="stylesheet" type="text/css">
<!-- video.js must be in the <head> for older IEs to work. -->
<script src="video.js"></script>
<!-- Unless using the CDN hosted version, update the URL to the Flash SWF -->
<script>
videojs.options.flash.swf = "video-js.swf";
</script>
<link href="//example.com/path/to/video-js.css" rel="stylesheet">
<script src="//example.com/path/to/video.js"></script>
<script>
videojs.options.flash.swf = "http://example.com/path/to/video-js.swf"
</script>
</head>
<?php
//generowanie tokena
$kanal = 'test';
$e = date('U')+10; // ważność linku w sekundach (jezezeli rtmp i www są na dwóch różnych maszynach lepiej podać większą wartość, gdyż może być różnica czasu.)
$haslo = "aaa";
$ajpi = $_SERVER['REMOTE_ADDR'];
$md5 = base64_encode(md5($haslo . $ajpi . $e , true));
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$rtmp = $kanal."?token=".$md5."&e=".$e;
//link z tokenem do wstawienia do odtwarzacza
echo 'rtmp://188.68.238.174/live/' .$rtmp;
?>
<html>
<body>
<object width="640" height="360">
<param name="movie" value="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf"></param>
<param name="flashvars" value="src=rtmp://188.68.238.174/live/"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf"
type="application/x-shockwave-flash" allowscriptaccess="always"
allowfullscreen="true" width="640" height="360"
flashvars="src=rtmp://188.68.238.174/live/">
</embed>
</object>
</body>
</html>
Re: Zabezpieczenie serwera nginx na token
Jak zmodyfikować plik stat.xsl żeby w osobnej rubryce wyświetlał ogólną liczbe osób oglądających
Zakładając że na serwerze mam powiedzmy 4 kanał , to chciał bym żeby wyświetlało się:
oglądających online: ..........
Coś takiego mniej więcej , co trzeba by dopisać do tego pliku stat.xsl
Zakładając że na serwerze mam powiedzmy 4 kanał , to chciał bym żeby wyświetlało się:
oglądających online: ..........
Coś takiego mniej więcej , co trzeba by dopisać do tego pliku stat.xsl
Re: Zabezpieczenie serwera nginx na token
Dowolnie możesz przerabiać widok statystyk, wyjaśnienie masz na wiki:
https://github.com/arut/nginx-rtmp-modu ... ubscribers
Poniżej inny przykład:
Pozdrawiam
https://github.com/arut/nginx-rtmp-modu ... ubscribers
Poniżej inny przykład:
Code: Select all
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
Liczba wszystkich klientów: <xsl:value-of select="count(//application/live/stream/client)"/><br />
Liczba oglądających: <xsl:value-of select="count(//application/live/stream/client[not(publishing)])"/><br />
Liczba nadających: <xsl:value-of select="count(//application/live/stream/client[publishing])"/><br />
Liczba wszystkich klientów na kanale test: <xsl:value-of select="count(//application/live/stream[name='test']/client[publishing])"/><br />
</xsl:template>
</xsl:stylesheet>