1

I have my working on default port and I want to be able to use the web interface with an URL like http://my.domain/torrents.

I tried adding a location and a proxy conf to Nginx but it fail to work fully. I guess it's because of web interface redirections.

server {
    root /data/www;
    autoindex on;

    server_name localhost;

    location / {
            try_files $uri $uri/ /index.html;
    }

    location /torrents/ {
            proxy_pass_header  X-Transmission-Session-Id;
            proxy_pass         http://127.0.0.1:9091;
    }
}

This conf fail because it can't reach /transmission/rpc (404 /usr/share/transmission/web/rpc) I have tried many things and I always have something missing. transmission/rpc or transmission/upload or transmission/web or transmission/javascript/whatever...

1

I was able to get this working just now with the following location in my config:

      location /transmission {
              proxy_pass http://127.0.0.1:9091;
              proxy_pass_header X-Transmission-Session-Id;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }

When I went to /transmission/, I got a 409 error saying that I had an invalid X-Transmission-Session-Id header, but when I went to /transmission/web everything seemed to be okay.

| improve this answer | |
  • You are digging some old topics :) – Cyrbil Aug 27 '15 at 6:44
  • I ran into some old problems ;) – Roger Filmyer Aug 27 '15 at 22:46
1

Your config says that only urls which start with /torrents/ should be proxy_passed to http://127.0.0.1:9091. For any other url like /transmission nginx will use the first location / and hence not proxy_pass it to the backend.

If you want every request to be proxy passed to the backend, you would need this location instead of the two you have:

location / {
        proxy_pass_header  X-Transmission-Session-Id;
        proxy_pass         http://127.0.0.1:9091;
}
| improve this answer | |
  • Thanks for your answer, I use nginx as my web server so I don't want to forward all requests to the transmission web interface. Only those coming from /torrents/. But you point out that my basic web configuration may be one part of the problem. I will continu to investigate. – Cyrbil Feb 18 '13 at 14:11
  • You say you have this webinterface on /torrents, and it's linking to urls like /transmission, right? maybe the problem is just that this webinterface isn't aware of the /torrents prefix, so it generates the links wrong. so maybe the correct link would be /torrent/transmission? Then the problem is probably in the configuration of this webinterface, somewhere you would need to configure that the prefix for every url should be /torrent – replay Feb 18 '13 at 14:17
0

After googling and finding this post, the below is my nginx https enabled website's working proxy setup

server {
  listen         80 default_server;
  server_name    domain.com;
  rewrite        ^ https://$server_name$request_uri? permanent;
}

server {
  listen 443 default_server;

  server_name domain.com;
  root /var/www;

  ssl on;
  ssl_certificate /etc/nginx/ssl/transmission.cert;
  ssl_certificate_key /etc/nginx/ssl/transmission.key;

  ssl_session_timeout 5m;

  ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
  ssl_prefer_server_ciphers on;

  # individual nginx logs for this gitlab vhost
  access_log  /var/log/nginx/access.log;
  error_log   /var/log/nginx/error.log;

  #location /index {
  #  autoindex on;
  #}
  
   #TRANSMISSION TORRENT WEB CLIENT SETUP START FOR MY PI
        location /transmission/ {
        proxy_read_timeout 300;
        proxy_pass_header  X-Transmission-Session-Id;
        proxy_set_header   X-Forwarded-Host $host;
        proxy_set_header   X-Forwarded-Server $host;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

        # if you changed the port number for transmission daemon, then adjust the
        # folllowing line
        proxy_pass         http://127.0.0.1:9091/transmission/web/;
        }

        # Also Transmission specific
    location /rpc {
        proxy_pass         http://127.0.0.1:9091/transmission/rpc;
    }
#TRANSMISSION TORRENT WEB CLIENT SETUP END

       
    location /upload {
        proxy_pass         http://127.0.0.1:9091/transmission/upload;
    }
}

here's the original gist

https://gist.github.com/michaelkeevildown/072b2f94af6bfa1416ee44c7004aff43

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.