# Load the njs script js_path /etc/nginx/conf.d/; js_import addExternalUrl from externalUrl.js; js_shared_dict_zone zone=path_cache:10m; server{ gzip on; listen 80; server_name default; set $emby http://172.17.0.1:8097; #emby address # Proxy sockets traffic for jellyfin-mpv-shim and webClient location ~ /(socket|embywebsocket) { # Proxy Emby Websockets traffic proxy_pass $emby; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Forwarded-Host $http_host; } # 代理 Emby 的 PlaybackInfo 请求 location ~* /Items/(\d+)/PlaybackInfo { #proxy_buffering off; js_body_filter addExternalUrl.rewritePlaybackInfo buffer_type=string; proxy_pass $emby; #proxy_pass_request_body off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 使用 JavaScript 模块处理响应 #js_body_filter rewritePlaybackInfo; js_header_filter addExternalUrl.HeaderFilter; } location ~* /videos/(\d+)/original { js_content addExternalUrl.cacheRedirect; } location ~* /Users/(.*)/Items/(\d+)$ { proxy_buffering off; js_body_filter addExternalUrl.addExternalUrl buffer_type=string; proxy_pass $emby; proxy_pass_request_body off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header Accept-Encoding "identity"; proxy_set_header X-Original-URI $request_uri; js_header_filter addExternalUrl.HeaderFilter; } location ~* /redirect2external { js_content addExternalUrl.redirectUrl; } location / { # Proxy main Emby traffic proxy_pass $emby; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Forwarded-Host $http_host; # Disable buffering when the nginx proxy gets very resource heavy upon streaming proxy_buffering off; } }