/opt から別のユーザーが所有する静的ファイルを提供すると 404 エラーが発生する

/opt から別のユーザーが所有する静的ファイルを提供すると 404 エラーが発生する

OS = Debian 11

デフォルトを編集しましたnginx(バージョン 1.18.0、Debian リポジトリからインストール) 設定は以下のとおりです。

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
            try_files $uri $uri/ =404;
    }

    location /torrent/ {
            autoindex on;
            alias /opt/docker/qbittorrent/downloads;
    }
}

ダウンロードしたファイルを提供するにはqbittorentHTTPプロトコルでDockerコンテナを起動します。しかし、404お探しのページが見つかりませんでした/torrent/またはにアクセスするとエラーが発生します/torrent/some_folder/some_name.some_extension

重要な場合、ウェブサーバーrw-r--r--docker_qbit:docker須藤えー。

答え1

何が起こっているかというと、NGINX ユーザーに、エイリアスで指定したディレクトリを移動する権限がないのです。

要件によると、ターゲット ディレクトリの権限を変更することはできません。

nginx私が見つけた唯一の解決策は、メイン(www-data) ユーザーをグループに追加することですdocker。 そうすれば、Web サーバーは権限を変更せずに指定されたディレクトリにアクセスできるようになります。

Debian 11 のデフォルトの nginx ユーザーが の場合www-data

そうであると仮定すると、これを行うコマンドは次のようになります。

usermod -a -G docker www-data

このコマンドは、ユーザー「www-data」をグループ「docker」に追加して変更します。

どのユーザーが nginx を実行しているかを確認するには、次のコマンドの出力を確認します。

ps -eo user,comm | grep nginx

完了したら、nginx をリロードして、コンテンツが利用可能かどうかを確認できます。

systemctl reload nginx

答え2

皆様、ありがとうございます。問題は、ディレクティブ/内のアドレスの後に続く部分が省略されていましたalias

関連情報