私はデフォルトのポートで作業しており、同様の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(/transmission
nginxなど)では、最初の場所が使用されるため、/
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;