웹 서버와 함께 사용할 전송 웹 인터페이스 가져오기

웹 서버와 함께 사용할 전송 웹 인터페이스 가져오기

저는 기본 포트에서 작업 중이며 유사한 URL로 웹 인터페이스를 사용할 수 있기를 원합니다 http://my.domain/torrents.

Nginx에 위치 및 프록시 구성을 추가하려고 시도했지만 완전히 작동하지 않습니다. 나는 이것이 웹 인터페이스 리디렉션 때문이라고 생각합니다.

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;
    }
}

이 conf는 연결할 수 없기 때문에 실패합니다 /transmission/rpc. ( 404 /usr/share/transmission/web/rpc) 많은 것을 시도했지만 항상 뭔가를 놓치고 있습니다. transmission/rpc아니면 transmission/upload아니면 ...transmission/webtransmission/javascript/whatever

답변1

이제 구성의 다음 위치를 통해 작동하게 할 수 있습니다.

      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;
     }

을(를) 방문하면 /transmission/헤더가 유효하지 않다는 409 오류가 발생 X-Transmission-Session-Id하지만, 방문하면 /transmission/web모든 것이 괜찮은 것 같습니다.

답변2

작업 샘플을 가지고linuxserver.io저장소.

https://github.com/linuxserver/reverse-proxy-confs/blob/master/transmission.subfolder.conf.sample

Docker를 사용하지 않는 경우 구성은 다음과 같습니다.

location ^~ /transmission {
    include proxy.conf;
    proxy_pass http://127.0.0.1:9091;
    proxy_pass_header  X-Transmission-Session-Id;
}

location ^~ /transmission/rpc {
    include proxy.conf;
    proxy_pass http://127.0.0.1:9091;
}

proxy.conf에 있습니다https://github.com/linuxserver/docker-swag/blob/master/root/defaults/nginx/proxy.conf.sample

답변3

귀하의 구성에서는 다음으로 시작하는 URL만 /torrents/Proxy_passed 로 지정되어 있습니다 http://127.0.0.1:9091. 다른 URL(예: /transmissionnginx)의 경우 첫 번째 위치가 사용되므로 /Proxy_pass가 이를 백엔드로 전달하지 않습니다.

모든 요청을 백엔드로 프록시하려면 기존 두 위치 대신 이 위치가 필요합니다.

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

답변4

첫 번째 RPC 호출에서는 여전히 409가 발생하는 것으로 보이지만 이는 로그에만 있는 것입니다. 그렇지 않으면 제대로 작동하는 것 같습니다.

/transmission이 직접 작동하지 않고 /transmission/web으로 이동해야 하는 문제를 해결하기 위해 다시 쓰기 규칙을 추가했습니다. 나머지는 @replay에서 제공했습니다.

이 nginx에서 SSL 리디렉션과 다른 서비스가 실행 중이므로 프록시를 통해 모든 것을 전달할 수 없습니다.

가정 - "/"로 끝나지 않는 모든 경로는 /로 리디렉션됩니다. 예를 들어 mydomain.com/transmission은 mydomain.com/transmission/으로 리디렉션됩니다.

# Redirect /transmission to /transmission/web/ to get around the CSRF token issues
                location = /transmission/ {
                        return 301 /transmission/web/;
                }
# Actually proxy with the session id header 
# We need a separate proxy for /transmission, which is the webpage and assets and a separate for the rpc calls which go to the server root
                location ^~ /transmission {
                        include proxy.conf;
                        proxy_pass http://127.0.0.1:9091/transmission;
                        proxy_pass_header X-Transmission-Session-Id;
                }
                location ^~ /transmission/rpc {
                        include proxy.conf;
                        proxy_pass http://127.0.0.1:9091;
                }


프록시 구성 세부정보는 기본값일 뿐이라고 생각합니다.

# Version 2023/02/09 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/proxy.conf.sample

# Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

# Proxy Connection Settings
proxy_buffers 32 4k;
proxy_connect_timeout 240;
proxy_headers_hash_bucket_size 128;
proxy_headers_hash_max_size 1024;
proxy_http_version 1.1;
proxy_read_timeout 240;
proxy_redirect http:// $scheme://;
proxy_send_timeout 240;

# Proxy Cache and Cookie Settings
proxy_cache_bypass $cookie_session;
#proxy_cookie_path / "/; Secure"; # enable at your own risk, may break certain apps
proxy_no_cache $cookie_session;

# Proxy Header Settings
#proxy_set_header Connection $connection_upgrade;
proxy_set_header Early-Data $ssl_early_data;
proxy_set_header Host $host;
proxy_set_header Proxy "";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Method $request_method;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Original-Method $request_method;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
proxy_set_header X-Real-IP $remote_addr;

관련 정보