2025-12-11, 12:32 PM
It works like a charm for me, and has for a long time. There's something funky with your configuration probably.
Since all other services work as they should, one can assume your nginx proxy host settings are good, but assumptions etc.
This is what I have put in Custom Nginx Configuration, I don't remember exactly where I found it, but it was most likely by browsing forums online.
And these are the rest of the settings:
As long as you're able to connect, the fault most likely lies in jellyfin itself.
"Doesn't even need to transcode the same file" This is a hint that something is a miss. If you force transcoding locally, does it still play or does is present the same error as when you try external? It should not behave any different, unless you have set a "Internet streaming bitrate limit (Mbps)" on the user you're testing with, or dashboard->playback->streaming that is lower than the bitrate of the media you are trying to play.
And does your settings under dashboard->networking look good?
Mine looks like this, note known proxies, without filling out this field your external connected devices will get the ip of your nginx instance, but simply copying the ip your device is reporting your jellyfin dashboard and pasting it here will fix that.
Since all other services work as they should, one can assume your nginx proxy host settings are good, but assumptions etc.
This is what I have put in Custom Nginx Configuration, I don't remember exactly where I found it, but it was most likely by browsing forums online.
Code:
# Disable buffering when the nginx proxy gets very resource heavy upon streaming
proxy_buffering off;
# Proxy main Jellyfin traffic
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_headers_hash_max_size 2048;
proxy_headers_hash_bucket_size 128;
# Security / XSS Mitigation Headers
# NOTE: X-Frame-Options may cause issues with the webOS app
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "0";
add_header X-Content-Type-Options "nosniff";
# Content Security Policy
# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
# Enforces https content and restricts JS/CSS to origin
# External Javascript (such as cast_sender.js for Chromecast) must be whitelisted.
# NOTE: The default CSP headers may cause issues with the webOS app
add_header Content-Security-Policy "default-src https: data: blob: ; img-src 'self' https://* ; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://www.gstatic.com https://www.youtube.com blob:; worker-src 'self' blob:; connect-src 'self'; object-src 'none'; frame-ancestors 'self'";And these are the rest of the settings:
As long as you're able to connect, the fault most likely lies in jellyfin itself.
"Doesn't even need to transcode the same file" This is a hint that something is a miss. If you force transcoding locally, does it still play or does is present the same error as when you try external? It should not behave any different, unless you have set a "Internet streaming bitrate limit (Mbps)" on the user you're testing with, or dashboard->playback->streaming that is lower than the bitrate of the media you are trying to play.
And does your settings under dashboard->networking look good?
Mine looks like this, note known proxies, without filling out this field your external connected devices will get the ip of your nginx instance, but simply copying the ip your device is reporting your jellyfin dashboard and pasting it here will fix that.

