Webサーバーで使用するトランスポートWebインターフェースのインポート

Webサーバーで使用するトランスポートWebインターフェースのインポート

私はデフォルトのポートで作業しており、同様のURLでWebインターフェースを使用できるようにしたいと思いますhttp://my.domain/torrents

Nginxに場所とプロキシ設定を追加しようとしましたが、完全には機能しません。私はこれがWebインターフェイスのリダイレクトのためだと思います。

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/web...transmission/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はそれをバックエンドに渡しません。

すべての要求をバックエンドにプロキシするには、既存の2つの場所の代わりにこの場所が必要です。

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;

関連情報