worker_processes auto;
error_log /dev/stdout info;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /dev/stdout main;
sendfile on;
keepalive_timeout 65;
gzip on;
proxy_cache_path /tmp/cache/ levels=1:2 keys_zone=CONTENTCACHE:10m max_size=10g inactive=10m use_temp_path=off;
ignore_invalid_headers off;
upstream node-backend {
server localhost:3000 max_fails=0;
}
<% servers.forEach(function(server, index) { %>
upstream media<%= index %>-backend {
server <%= server %> max_fails=0;
}
<% }); %>
server {
listen 80;
server_name localhost;
sendfile off;
<% servers.forEach(function(server, index) { %>
location ~ ^/<%= server %>/(.*)$ {
internal;
proxy_pass http://media<%= index %>-backend/$1$is_args$args;
}
<% }); %>
location ~ ^/(.*\.m3u8)$ {
proxy_cache CONTENTCACHE;
proxy_cache_lock on;
proxy_cache_key $scheme$proxy_host$uri;
proxy_cache_valid 1s;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_pass http://node-backend/$1$is_args$args;
}
location ~ ^/(.*\.ts)$ {
proxy_cache CONTENTCACHE;
proxy_cache_lock on;
proxy_cache_key $scheme$proxy_host$uri;
proxy_cache_valid 60s;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_pass http://node-backend/$1$is_args$args;
}
location ~ ^/(.*\.m4s)$ {
proxy_cache CONTENTCACHE;
proxy_cache_lock on;
proxy_cache_key $scheme$proxy_host$uri;
proxy_cache_valid 60s;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_pass http://node-backend/$1$is_args$args;
}
location ~ ^/(.*\.mpd)$ {
proxy_cache CONTENTCACHE;
proxy_cache_lock on;
proxy_cache_key $scheme$proxy_host$uri;
proxy_cache_valid 1s;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_pass http://node-backend/$1$is_args$args;
}
location ~ ^/(.*\.html)$ {
proxy_cache CONTENTCACHE;
proxy_cache_lock on;
proxy_cache_key $scheme$proxy_host$uri;
proxy_cache_valid 600s;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_pass http://node-backend/$1$is_args$args;
}
location ~ ^/(.*\.flv)$ {
proxy_cache CONTENTCACHE;
proxy_cache_lock on;
proxy_cache_key $scheme$proxy_host$uri;
proxy_cache_valid 3s;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_pass http://node-backend/$1$is_args$args;
}
location ~ ^/(.*\.js)$ {
proxy_cache CONTENTCACHE;
proxy_cache_lock on;
proxy_cache_key $scheme$proxy_host$uri;
proxy_cache_valid 600s;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_pass http://node-backend/$1$is_args$args;
}
location / {
proxy_cache CONTENTCACHE;
proxy_cache_lock on;
proxy_cache_key $scheme$proxy_host$uri;
proxy_cache_valid 60s;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_pass http://node-backend;
}
location /healthcheck {
proxy_pass http://node-backend/healthcheck$is_args$args;
}
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
}