
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.ext
URI 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.