worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root html; try_files $uri @distrib; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location /live/stat { rtmp_stat all; } location /live { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /tmp; add_header Cache-Control no-cache; add_header Access-Control-Allow-Origin $http_origin; } location @distrib { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; # socket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://localhost:5000; proxy_redirect off; } } } rtmp { server { listen 1935; chunk_size 4096; publish_time_fix off; # Entry application # The streamer publishes here through a streaming software with their key # The authenticator will give the streamer a proper name on hls-live application live { # enable live streaming live on; record off; allow play 127.0.0.1; deny play all; on_publish 'http://127.0.0.1:9321/publish'; on_publish_done 'http://127.0.0.1:9321/publish_done'; push rtmp://127.0.0.1:1935/hls-live; } # Output application application hls-live { # enable live streaming live on; allow publish 127.0.0.1; deny publish all; hls on; hls_path /tmp/live; hls_fragment 2s; hls_cleanup on; hls_sync 100ms; hls_playlist_length 60; } } }