2025-06-29, 11:27 AM
(2025-06-29, 10:07 AM)niels Wrote: That location block does look right to me. Comparing it to my own Nginx config one thing you could try it to also add a proxy_set_header for the X-Forwarded-Protocol header.
For reference, here is my entire location block:
Code:location / {
proxy_pass localhost;
proxy_set_header Host $host;
# X-Forwarded
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;
# WebSockets
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Disable buffering when the nginx proxy gets very resource heavy upon streaming
proxy_buffering off;
proxy_cache off;
}
Hi, thanks so much for the suggestions and for sharing your config. I really appreciate you taking the time to help.
I have just updated my /etc/nginx/apps/jellyfin.conf file to include the two directives you recommended: proxy_set_header X-Forwarded-Protocol $scheme; and proxy_cache off; . Unfortunately, after saving the file, confirming the config with nginx -t , restarting Nginx, and doing a hard refresh in my browser, the problem remains exactly the same. The main UI works perfectly, but clicking to join a SyncPlay group is still unresponsive, and the WebSocket connection fails. For full transparency, so you can see exactly what was tried, here is the complete and final jellyfin.conf file that incorporates your suggestions and is still not working for SyncPlay:
Code:
# This specific block handles the WebSocket traffic for SyncPlay.
# The "=" sign tells Nginx to match this exact path and stop.
location = /jellyfin/socket {
# Proxy to Jellyfin's standard HTTP port
proxy_pass http://127.0.0.1:8096;
# Required headers for WebSocket upgrade
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Standard proxy headers
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;
}
# This block handles all normal UI and API traffic.
location /jellyfin {
# This proxy pass to the HTTP port is correct based on our tests.
proxy_pass http://127.0.0.1:8096;
proxy_set_header Host $host;
proxy_http_version 1.1;
# WebSocket headers (also included here for general compatibility)
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# These headers tell Jellyfin it is behind a proxy.
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-Ssl on;
proxy_redirect off;
proxy_buffering off;
proxy_cache off;
}