diff --git a/conf/nginx.conf b/conf/nginx.conf index f8345c1..b52eea0 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -22,6 +22,7 @@ location @api { location = /api/v1/videos/upload-resumable { client_max_body_size 0; proxy_request_buffering off; + try_files /dev/null @api; } @@ -44,6 +45,13 @@ location ~ ^/api/v1/videos/(upload|([^/]+/studio/edit))$ { try_files /dev/null @api; } +location ~ ^/api/v1/runners/jobs/[^/]+/(update|success)$ { + client_max_body_size 12G; # default is 1M + more_set_headers "X-File-Maximum-Size : 8G always"; # inform backend of the set value in bytes before mime-encoding (x * 1.4 >= client_max_body_size) + + try_files /dev/null @api; +} + location ~ ^/api/v1/(videos|video-playlists|video-channels|users/me) { client_max_body_size 6M; # default is 1M more_set_headers "X-File-Maximum-Size : 4M always"; # inform backend of the set value in bytes before mime-encoding (x * 1.4 >= client_max_body_size) @@ -89,9 +97,10 @@ location ~ ^/plugins/[^/]+(/[^/]+)?/ws/ { ## root __DATADIR__; - # Enable compression for JS/CSS/HTML, for improved client load times. - # It might be nice to compress JSON/XML as returned by the API, but - # leaving that out to protect against potential BREACH attack. + +# Enable compression for JS/CSS/HTML, for improved client load times. +# It might be nice to compress JSON/XML as returned by the API, but +# leaving that out to protect against potential BREACH attack. # gzip on; gzip_vary on; gzip_types # text/html is always compressed by HttpGzipModule @@ -159,7 +168,7 @@ location ~ ^/static/(thumbnails|avatars)/ { try_files $uri @api; } -location ~ ^(/static/(webseed|streaming-playlists)/private/)|^/download { +location ~ ^(/static/(webseed|web-videos|streaming-playlists)/private/)|^/download { # We can't rate limit a try_files directive, so we need to duplicate @api proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -172,20 +181,14 @@ location ~ ^(/static/(webseed|streaming-playlists)/private/)|^/download { } # Bypass PeerTube for performance reasons. Optional. -location ~ ^/static/(webseed|redundancy|streaming-playlists)/ { +location ~ ^/static/(webseed|web-videos|redundancy|streaming-playlists)/ { limit_rate_after 5M; - # Clients usually have 4 simultaneous webseed connections, so the real limit is 3MB/s per client - set $peertube_limit_rate 800k; - - # Increase rate limit in HLS mode, because we don't have multiple simultaneous connections - if ($request_uri ~ -fragmented.mp4$) { - set $peertube_limit_rate 5M; - } + set $peertube_limit_rate 5M; # Use this line with nginx >= 1.17.0 limit_rate $peertube_limit_rate; - # Or this line if your nginx < 1.17.0 + # Or this line with nginx < 1.17.0 # set $limit_rate $peertube_limit_rate; if ($request_method = 'OPTIONS') { @@ -213,7 +216,8 @@ location ~ ^/static/(webseed|redundancy|streaming-playlists)/ { sendfile_max_chunk 1M; # prevent one fast connection from entirely occupying the worker process. should be > 800k. aio threads; - rewrite ^/static/webseed/(.*)$ /videos/$1 break; + # web-videos is the name of the directory mapped to the `storage.web_videos` key in your PeerTube configuration + rewrite ^/static/webseed/(.*)$ /web-videos/$1 break; rewrite ^/static/(.*)$ /$1 break; root __DATADIR__;