La directiva de ubicación no funciona

La directiva de ubicación no funciona

Para mi servidor NGINX tengo un servidor virtual configurado solo 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 resulta en un 404.

Mi configuración en este momento se ve así:

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

Tenga en cuenta que este archivo se incluye desde /etc/nginx/nginx.conf, dentro de una directiva http

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

Sin embargo, si elimino location /imagesy cambio location /a lo siguiente...

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

¡Funciona! ¿Qué estoy haciendo mal aquí?

Respuesta1

Su configuración sigue la configuración de nginxtrampasDeberías leerlo antes de configurar nginx.

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

Además, en lugar de definir una raíz personalizada para el directorio de imágenes, utilice try_files. El directorio $uridel mapa se asignará con ./images//static/images/

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

información relacionada