worker_processes auto; error_log /dev/stdout info; events { worker_connections 1024; } http { resolver 127.0.0.11 ipv6=off; lua_package_path "/router/?.lua;;"; log_format nginxlog_json escape=json '{ "timestamp": "$time_iso8601", ' '"remote_addr": "$remote_addr", ' '"body_bytes_sent": $body_bytes_sent, ' '"request_time": $request_time, ' '"response_status": $status, ' '"request": "$request", ' '"request_method": "$request_method", ' '"host": "$host",' '"upstream_addr": "$upstream_addr",' '"http_x_forwarded_for": "$http_x_forwarded_for",' '"http_referrer": "$http_referer", ' '"http_user_agent": "$http_user_agent", ' '"http_version": "$server_protocol"}'; access_log /dev/stdout nginxlog_json; include mime.types; default_type application/octet-stream; init_by_lua_block { router = require("router") } server { listen 8081; location ~ "/(?[^/]*)/index.m3u8$" { set $target ""; access_by_lua_block { ngx.var.target = router.fetch_streams(ngx.var.stream) } proxy_pass http://$target; } location ~ "/(?[^/]*)/(?.+)\.ts$" { set $target ""; access_by_lua_block { ngx.var.target = router.fetch_streams(ngx.var.stream) } proxy_pass http://$target; } location / { return 404; } } }