Hi @jess, here’s a summary of the differences:
in kaltura.ssl.conf, my virtualhost directive is _ default _:443 (without the spaces), rather than the servername. I got an SSL error if I use the servername directly - perhaps that is related?
in nginx.conf: there’s one additional line in below listen 88 -> include /etc/nginx/conf.d/live.conf
and I have an RTMP configuration directive at the bottom (listen 1935) which isn’t present in the one in the thread
[for reference, I don’t actually use the live streaming option, so I think these could be removed]
kaltura.conf: There are two extra directives at the bottom, one for /dashme and one for /hlsme, otherwise the files are the same.
ssl.conf: these files are the same
delivery profiles match for 1001, 1002, 1003 (there are some default ones: 1 - 5, 301 - 304)
When I check the kaltura_prod.log there are a number of lines, one does return with Delivery ID for parterId [100] and streamer type [applehttp] is 1001, so I think it’s selecting the correct delivery profile, since that would be the HLS one.
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 https://kalapi/;
proxy_set_header Host $http_host;
}
# 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 https://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
}
nginx.conf
user kaltura;
worker_processes auto;
error_log /opt/kaltura/log/kaltura_nginx_errors.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
multi_accept on;
use epoll;
}
http {
upstream kalapi {
server server.ca;
}
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 mapped;
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 server.ca;
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/;
}
}
}
ssl.conf
# HTTPS server
#
server {
listen 8443 ssl;
server_name server.ca;
ssl_certificate /etc/pki/tls/certs/nginx/server.ca.crt;
ssl_certificate_key /etc/pki/tls/private/server.ca.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
include /etc/nginx/conf.d/kaltura.conf;
}
zzzkaltura.ssl.conf
<IfModule !ssl_module>
LoadModule ssl_module modules/mod_ssl.so
</IfModule>
SSLPassPhraseDialog builtin
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
<IfVersion < 2.4>
SSLMutex default
</IfVersion>
<IfVersion >= 2.4>
Mutex sysvsem default
</IfVersion>
SSLCryptoDevice builtin
SSLCertificateFile /etc/pki/tls/certs/server.ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.ca.key
SSLCACertificateFile /etc/pki/tls/certs/intermediate.crt
<VirtualHost _default_:443>
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
ErrorLog "/opt/kaltura/log/kaltura_apache_errors_ssl.log"
CustomLog /opt/kaltura/log/kaltura_apache_access_ssl.log vhost_kalt
Include "/opt/kaltura/app/configurations/apache/conf.d/enabled.*.conf"
</VirtualHost>
delivery_profile:
*************************** 1. row ***************************
id: 1001
partner_id: 0
created_at: 2016-04-29 11:46:18
updated_at: 2016-04-29 11:46:18
name: Kaltura HLS segmentation
type: 61
system_name: Kaltura HLS segmentation
description: Kaltura HLS segmentation
url: https://server.ca:8443/hls
host_name: server.ca
recognizer: NULL
tokenizer: NULL
status: 0
media_protocols: NULL
streamer_type: applehttp
is_default: 1
parent_id: 0
custom_data: NULL
priority: 0
*************************** 2. row ***************************
id: 1002
partner_id: 0
created_at: 2016-04-29 11:46:18
updated_at: 2016-04-29 11:46:18
name: Kaltura HDS segmentation
type: 63
system_name: Kaltura HDS segmentation
description: Kaltura HDS segmentation
url: https://server.ca:8443/hds
host_name: server.ca
recognizer: NULL
tokenizer: NULL
status: 0
media_protocols: NULL
streamer_type: hdnetworkmanifest
is_default: 1
parent_id: 0
custom_data: NULL
priority: 0
*************************** 3. row ***************************
id: 1003
partner_id: 0
created_at: 2016-04-29 11:46:18
updated_at: 2016-04-29 11:46:18
name: Kaltura DASH segmentation
type: 68
system_name: Kaltura DASH segmentation
description: Kaltura DASH segmentation
url: https://server.ca:8443/dash
host_name: server.ca
recognizer: NULL
tokenizer: NULL
status: 0
media_protocols: NULL
streamer_type: mpegdash
is_default: 1
parent_id: 0
custom_data: NULL
priority: 0
3 rows in set (0.00 sec)