Standortrichtlinie funktioniert nicht

Standortrichtlinie funktioniert nicht

Für meinen NGINX-Server habe ich einen virtuellen Server eingerichtet, der nur statische Inhalte ausgibt. Im Moment versuche ich, ihn so einzurichten, dass Bilder ein Ablaufdatum haben. Wenn ich dafür jedoch eine Standortanweisung erstelle, führt alles nur zu einer 404.

Meine Konfiguration sieht momentan so aus:

/srv/www/static.conf

server {
    listen                          80;
    server_name                     static.*.*;

    location / {
            root                    /srv/www/static;
            deny                    all;
    }

    location /images {
            expires                 1y;
            log_not_found           off;
            root                    /srv/www/static/images;
    }
}

Beachten Sie, dass diese Datei in /etc/nginx/nginx.conf innerhalb einer HTTP-Direktive enthalten ist.

Ich versuche, auf das Bild zuzugreifen, sagen wir mal unter ... static.example.com/images/screenshots/something.png. Natürlich existiert das Bild auch unter /srv/www/static/images/screenshots/something.png. Allerdings funktioniert der Aufruf dieser Adresse nicht und ich bekomme nur die Meldung404 Nicht gefunden.

Wenn ich jedoch Folgendes entferne location /imagesund ändere ...location /

location / {
    root /srv/www/static;
}

Es funktioniert! Was mache ich hier falsch?

Antwort1

Ihre Konfiguration folgt der Nginx-KonfigurationTückenSie sollten es lesen, bevor Sie nginx konfigurieren.

Um Ihre Frage zu beantworten: Sie sollten rootden Standort nicht definieren. Definieren Sie ihn einmal und mit dem Standort-Tag können Sie automatisch den Zugriff auf bestimmte Verzeichnisse zuweisen.

Anstatt ein benutzerdefiniertes Stammverzeichnis für das Bilderverzeichnis zu definieren, verwenden Sie außerdem try_files. Dadurch wird das Verzeichnis mit $urizugeordnet ./images//static/images/

Versuchen Sie diese Konfiguration:

server {
    listen                          80;
    server_name                     static.*.*;
    root                            /srv/www;

    location /static/ {
            deny                    all;
    }

    location /images/ {
            expires                 1y;
            log_not_found           off;
            autoindex               off;
            try_files $uri static/images$uri;
    }
}

verwandte Informationen