@jess This is 13.14 so the config is a bit different (I tried to make some modification according to the link)
nsginx.conf:
user kaltura;
worker_processes auto;
error_log
pid /var/run/nginx.pid;
events {
worker_connections 1024;
multi_accept on;
use epoll;
}
http {
upstream kalapi {
server {MY CF SERVRE};
}
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $bytes_sent $request_time "$http_referer" "$http_user_agent" "-" - '
'"$sent_http_x_kaltura" "$http_host" $pid $sent_http_x_kaltura_session - '
'$request_length "$sent_http_content_range" "$http_x_forwarded_for" '
'"$http_x_forwarded_server" "$http_x_forwarded_host" "$sent_http_cache_control" '
'$connection ';
access_log /opt/kaltura/log/kaltura_nginx_access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 60;
keepalive_requests 1000;
client_header_timeout 20;
client_body_timeout 20;
reset_timedout_connection on;
send_timeout 20;
gzip on;
gzip_types application/vnd.apple.mpegurl video/f4m application/dash+xml text/xml;
# common vod settings
vod_mode remote;
vod_upstream_location /kalapi_proxy;
#vod_upstream_extra_args "pathOnly=1";
# shared memory zones
vod_metadata_cache metadata_cache 512m;
vod_mapping_cache mapping_cache 64m;
vod_response_cache response_cache 64m;
vod_performance_counters perf_counters;
# common file caching / aio
open_file_cache max=1000 inactive=5m;
open_file_cache_valid 2m;
open_file_cache_min_uses 1;
open_file_cache_errors on;
aio on;
server {
listen 88;
server_name {MY WEB SERVER};
include /etc/nginx/conf.d/live.conf;
include /etc/nginx/conf.d/kaltura.conf;
}
include /etc/nginx/conf.d/ssl.conf;
}
RTMP configuration
rtmp {
server {
listen 1935; # Listen on standard RTMP port
chunk_size 4000;
# This application is to accept incoming stream
application kLive {
live on; # Allows live input from above
dash on;
dash_path /var/tmp/dashme;
hls on; # Enable HTTP Live Streaming
hls_cleanup on;
hls_sync 100ms;
hls_fragment 2s;
hls_path /var/tmp/hlsme/;
}
}
}
kaltura.conf:
# static files (crossdomain.xml, robots.txt etc.) + fallback to api
location / {
root /etc/nginx/static;
try_files $uri @api_fallback;
}
# nginx status page
location /nginx_status {
stub_status on;
access_log off;
}
# vod status page
location /vod_status {
vod_status;
access_log off;
}
# internal location for vod subrequests
location ~ /kalapi_proxy/[^/]+/(.*) {
internal;
proxy_pass http://kalapi/$1;
proxy_http_version 1.1;
proxy_set_header Host {MY CF SERVER};
proxy_set_header Connection "";
}
# serve flavor progressive (clipFrom/To are not supported with 'vod none' so they are proxied)
location ~ ^/p/\d+/(sp/\d+/)?serveFlavor/((?!clipFrom)(?!clipTo).)*$ {
vod none;
add_header Last-Modified "Sun, 19 Nov 2000 08:52:00 GMT";
expires 100d;
}
# serve flavor HLS
location ~ ^/hls/p/\d+/(sp/\d+/)?serveFlavor/ {
vod hls;
vod_bootstrap_segment_durations 2000;
vod_bootstrap_segment_durations 2000;
vod_bootstrap_segment_durations 2000;
vod_bootstrap_segment_durations 4000;
add_header Last-Modified "Sun, 19 Nov 2000 08:52:00 GMT";
add_header Access-Control-Allow-Headers "*";
add_header Access-Control-Expose-Headers "Server,range,Content-Length,Content-Range";
add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS";
add_header Access-Control-Allow-Origin "*";
expires 100d;
}
# serve flavor DASH
location ~ ^/dash/p/\d+/(sp/\d+/)?serveFlavor/ {
vod dash;
vod_segment_duration 4000;
vod_bootstrap_segment_durations 3500;
vod_align_segments_to_key_frames on;
vod_dash_manifest_format segmenttemplate;
add_header Last-Modified "Sun, 19 Nov 2000 08:52:00 GMT";
add_header Access-Control-Allow-Headers "origin,range,accept-encoding,referer";
add_header Access-Control-Expose-Headers "Server,range,Content-Length,Content-Range";
add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS";
add_header Access-Control-Allow-Origin "*";
expires 100d;
}
# serve flavor HDS
location ~ ^/hds/p/\d+/(sp/\d+/)?serveFlavor/ {
vod hds;
vod_segment_duration 6000;
vod_align_segments_to_key_frames on;
vod_segment_count_policy last_rounded;
add_header Last-Modified "Sun, 19 Nov 2000 08:52:00 GMT";
add_header Access-Control-Allow-Origin "*";
expires 100d;
}
# serve flavor MSS
location ~ ^/mss/p/\d+/(sp/\d+/)?serveFlavor/ {
vod mss;
vod_segment_duration 4000;
vod_manifest_segment_durations_mode accurate;
add_header Last-Modified "Sun, 19 Nov 2000 08:52:00 GMT";
expires 100d;
}
# all unidentified requests fallback to api (inc. playManifest)
location @api_fallback {
proxy_pass http://kalapi;
proxy_set_header Host $http_host;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /dashme {
open_file_cache off;
root /var/tmp;
add_header Cache-Control no-cache;
# To avoid issues with cross-domain HTTP requests (e.g. during development)
add_header Access-Control-Allow-Origin *;
}
location /hlsme {
open_file_cache off;
types {
application/vnd.apple.mpegurl m3u8;
}
root /var/tmp;
add_header Cache-Control no-cache; # Prevent caching of HLS fragments
add_header Access-Control-Allow-Origin *; # Allow web player to access our playlist
}