web-dev-qa-db-fra.com

La directive de localisation ne fonctionne pas

Pour mon serveur Nginx, j'ai un serveur virtuel configuré uniquement pour détecter le contenu statique. Pour le moment, j'essaie de le mettre en place pour que les images aient une date d'expiration. Cependant, lorsque je crée une directive de localisation pour cela, tout entraîne un 404.

Ma configuration en ce moment ressemble à ceci:

/ srv/www/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;
    }
}

Remarque, ce fichier est inclus dans /etc/nginx/nginx.conf, dans une directive HTTP

J'essaie d'accéder à l'image, disons ... static.example.com/images/screenshots/something.png. Bien sûr, l'image existe également à /srv/www/static/images/screenshots/something.png. Cependant, allez à ladite adresse ne fonctionne pas et ne me dit simplement pas 404 non trouvé.

Cependant, si je suppose location /images et changer location / Pour ce qui suit ...

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

Ça marche! Qu'est-ce que je fais mal ici?

9
Jesse Brands

Votre configuration suivie NGinx Configuration pièges Vous devez le lire avant de configurer NGinx.

Pour répondre à votre question, vous ne devez pas définir root à l'emplacement, le définir une fois et la balise d'emplacement vous permettra automatiquement d'attribuer l'accès à des répertoires spécifiques.

Également au lieu de définir une racine personnalisée pour le répertoire des images, utilisez try_files. Les $uri mappera /images/ répertoire avec /static/images/.

Essayez cette configuration:

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