Skip to content

Instantly share code, notes, and snippets.

@CSRaghunandan
Last active November 1, 2024 21:12
Show Gist options
  • Save CSRaghunandan/ce2394cd5a9c8a412f8ff5ee1478560a to your computer and use it in GitHub Desktop.
Save CSRaghunandan/ce2394cd5a9c8a412f8ff5ee1478560a to your computer and use it in GitHub Desktop.
Nginx configuration for serving mp4 videos
#user nobody;
worker_processes 4;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include 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 off;
sendfile_max_chunk 512k;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
server {
# add proxy caches
proxy_cache_path /tmp/mycache keys_zone=mycache:70m;
listen *:9000 ;
#listen [::]:80 ipv6only=on;
root /usr/local/nginx/html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name _;
location /rtc {
#try_files $uri $uri/ /index.html;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8088/janus;
}
location /rtcapp {
# enable thread pools for livestream
aio threads=default;
proxy_pass http://localhost:8188;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
location ~ \.flv$ {
# enable thread pool
aio threads=default;
flv;
}
location ~/.mp4 {
root /media;
mp4;
mp4_buffer_size 1M;
mp4_max_buffer_size 3M;
# enable thread bool
aio threads=default;
# enable caching for mp4 videos
proxy_cache mycache;
proxy_cache_valid 200 300s;
proxy_cache_lock on;
# enable nginx slicing
slice 1m;
proxy_cache_key $host$uri$is_args$args$slice_range;
proxy_set_header Range $slice_range;
proxy_http_version 1.1;
# Immediately forward requests to the origin if we are filling the cache
proxy_cache_lock_timeout 0s;
# Set the 'age' to a value larger than the expected fill time
proxy_cache_lock_age 200s;
proxy_cache_use_stale updating;
}
}
}
@leslietoo
Copy link

@CSRaghunandan Could you please tell me what nginx modules needed for your conf file?

@romitkarmakar
Copy link

For Ubuntu Users please first install nginx mp4 module using this command

sudo apt-get install nginx-extras

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment