13 votos

La directiva de localización no funciona

Para mi servidor NGINX tengo un servidor virtual configurado sólo para distribuir contenido estático. De momento estoy intentando configurarlo para que las imágenes tengan fecha de caducidad. Sin embargo, cuando creo una directiva de ubicación para esto, todo sólo resulta en un 404.

Mi configuración ahora mismo es la siguiente:

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

Nota, este archivo se incluye desde /etc/nginx/nginx.conf, dentro de una directiva http

Intento acceder a la imagen, digamos... static.example.com/images/screenshots/something.png . Efectivamente, la imagen también existe en /srv/www/static/images/screenshots/something.png . Sin embargo, al ir a dicha dirección no funciona y simplemente me dice 404 no encontrado .

Sin embargo, si elimino location /images y cambiar location / a lo siguiente...

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

Funciona ¿Qué estoy haciendo mal?

18voto

edvinas.me Puntos 1256

Su configuración es la siguiente configuración de nginx escollos Deberías leerlo antes de configurar nginx.

Para responder a su pregunta, no debe definir root en ubicación, defínala una vez y la etiqueta de ubicación le permitirá asignar automáticamente el acceso a directorios específicos.

Además, en lugar de definir una root personalizada para el directorio de imágenes, utilice try_files . En $uri mapeará /images/ con /static/images/ .

Prueba esta configuración:

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

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X