Trate diferentes archivos estáticos con nginx en un directorio concreto

Trate diferentes archivos estáticos con nginx en un directorio concreto

Estoy creando una aplicación en la que la propia aplicación entregará algunos archivos. No soy bueno configurando cosas del lado del servidor, por lo que mi configuración de nginx se ve así:

location ~* (.+)\.(\d+)\.(js|css|png|jpg|jpeg|gif)$ {
    try_files $uri $1.$3;
}

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml|txt)$ {
    access_log  off;
    expires     30d;
    root        /var/www/domain_tld/public;
}

Sé que la segunda regla es para servir las extensiones enumeradas dirigidas desde nginx y eso es genial, pero me gustaría tener una regla que diga:

/data/photos/{string}/{name}.{extension}

gracias de antemano

Respuesta1

Supongo que desea enviar un URI de ubicación como (.+)\.(\d+)\.(js|css|png|jpg|jpeg|gif)$el siguiente archivo /data/photos/$1/$2.$3.

Entonces, es tan simple como eso (tenga en cuenta que modifiqué ligeramente la expresión regular, podría ser perfecto incluir en la lista blanca todos los casos lo más cerca posible):

location ~* ^/(?<string>.+)\.(?<name>\d+)\.(?<extension>js|css|png|jpg|jpeg|gif)$ {
    root /data/photos;
    try_files $string/$name.$extension =404;
}

Una llamada al /myString.file.extURI proporcionará contenido desde/data/photos/myString/file.ext

Tenga en cuenta que todas las ubicaciones de nginx comienzan con /.

Recuerde también que cada solicitud es atendida porsólo unoubicación, por lo que es posible que desee fusionar ambos si se supone que deben aplicarse simultáneamente a las solicitudes.

información relacionada