Jellyfin Forum
nginx config - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Troubleshooting (https://forum.jellyfin.org/f-troubleshooting)
+--- Thread: nginx config (/t-nginx-config)



nginx config - julipuli - 2024-06-27

I am hosting jellyfin as a docker container. It was working perfectly fine until i updated my server and the jellyfin container.

I can access jellyfin without problems via the ip:port. Access over my domain is also possible, but not anymore via via the subdomain.domain.org/ route. I can only access the web interface via subdomain.domain.org/web/index.html. Wouldn't be much of a problem but also my mobile app does not work anymore at all. When i configure the domain to connect to in the app, it just gives an error that the connection could not be established.

When i access the / route it redirect to /web/ which results in a 404.

This is my sites-enabled/jellyfin config:


server {
      server_name subdomain.domain.org;

      access_log /var/log/nginx/jellyfin.access;
      error_log /var/log/nginx/jellyfin.error;

      set $jellyfin 127.0.0.1;

      location / {
          proxy_pass http://127.0.0.1:8096;
          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;
      }

      # location block for /web - This is purely for aesthetics so /web/#!/ works instead of having to go to /web/index.html/#!/
      location ~ ^/web/$ {
          # Proxy main Jellyfin traffic
          proxy_pass http://$jellyfin:8096/web/index.html/;
          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;
      }

      location /socket {
          # Proxy Jellyfin Websockets traffic
          proxy_pass http://$127.0.0.1:8096;
          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;
      }

        # Security / XSS Mitigation Headers
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Content-Type-Options "nosniff";


    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/subdomain.domain.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/subdomain.domain.org/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = subdomain.domain.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


      listen 80;
      server_name subdomain.domain.org;
    return 404; # managed by Certbot


}



RE: nginx config - TheDreadPirate - 2024-06-27

You need to remove this section.

Code:
# location block for /web - This is purely for aesthetics so /web/#!/ works instead of having to go to /web/index.html/#!/
      location ~ ^/web/$ {
          # Proxy main Jellyfin traffic
          proxy_pass http://$jellyfin:8096/web/index.html/;
          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;
}

As mentioned in our 10.9 annoucement blog post, this section is obsolete.

https://jellyfin.org/posts/jellyfin-release-10.9.0/#:~:text=Nginx%20reverse%20proxy%20users%3A%20If%20you%20have%20a%20block%20in%20your%20nginx%20config%20that%20begins%20with%20location%20~%20%5E/web/%24%20%7B%20and%20the%20comment%20%23%20location%20block%20for%20/web%20%2D%20This%20is%20purely%20for%20aesthetics%20%5B...%5D%2C%20please%20remove%20that%20block%20as%20it%20will%20cause%20occasional%20issues%20with%20404%27s%20and/or%20slow%20performance%20on%2010.9.z.


RE: nginx config - pixel24 - 2024-06-28

Interesting, I missed the note in the announcement :-(

I have this block in my nginx configuration:

Code:
    location /socket {
        # Proxy Jellyfin Websockets traffic
        proxy_pass http://$jellyfin:8096;
        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;
    }

It doesn't start with ^ though. Do I need to remove that?


RE: nginx config - TheDreadPirate - 2024-06-28

You need a /socket location. Here is my nginx config for reference (I need to clean it up).

https://sourceb.in/auQ7583d3q