404 beim Bereitstellen statischer Dateien, die einem anderen Benutzer gehören, über /opt

404 beim Bereitstellen statischer Dateien, die einem anderen Benutzer gehören, über /opt

Betriebssystem = Debian 11

Ich habe die Standardeinstellung bearbeitetnginx(Version 1.18.0, installiert aus dem Debian-Repository) Konfiguration wie unten:

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

um meine heruntergeladenen Dateien zu bedienen mitAbonnierenDocker-Container auf HTTP-Protokoll. Allerdings bekomme ich eine404 Nicht gefundenFehler, wenn ich entweder /torrent/oder besuche /torrent/some_folder/some_name.some_extension.

Falls wichtig, verfügen diese über rw-r--r--die Berechtigung und sind Eigentum von, docker_qbit:dockerobwohl der Webserver von einemsudoäh.

Antwort1

Was passiert, ist, dass der NGINX-Benutzer nicht die Berechtigung hat, das Verzeichnis zu durchlaufen, das Sie in Ihrem Alias ​​angegeben haben.

Aus Ihren Anforderungen geht hervor, dass wir die Berechtigungen für das Zielverzeichnis nicht ändern können.

Die einzige Lösung, die ich sehe, wäre, den Hauptbenutzer nginx(www-data) zur dockerGruppe hinzuzufügen. Auf diese Weise sollte der Webserver auf das angegebene Verzeichnis zugreifen können, ohne seine Berechtigung zu ändern.

Wenn der Standard-Nginx-Benutzer unter Debian 11 ist www-data.

Wenn dies der Fall wäre, würde der entsprechende Befehl folgendermaßen aussehen:

usermod -a -G docker www-data

Dieser Befehl ändert den Benutzer „www-data“, indem er ihn zur Gruppe „Docker“ hinzufügt.

Um sicherzugehen, welcher Benutzer nginx ausführt, können Sie sich die Ausgabe dieses Befehls ansehen:

ps -eo user,comm | grep nginx

Sobald der Vorgang abgeschlossen ist, können Sie Nginx neu laden und prüfen, ob der Inhalt jetzt verfügbar ist.

systemctl reload nginx

Antwort2

Vielen Dank an alle. Das Problem wurde /durch das Anhängen der Adresse an die aliasDirektive behoben.

verwandte Informationen