En el siguiente código estoy configurando algunas variables con información sobre la imagen (como el título, URL, etc.)
location /photo {
ssi on;
ssi_last_modified on;
set $photosrc /photos/$request_basename;
set $phototitle $request_basename;
...
}
Me gustaría mostrar la fecha de creación de la foto en la página. Lo ideal sería que estuviera en otra variable…:
...
set $photodate $???;
...
pero AFAICT no hay ninguna variable en NGINX que contenga la última fecha de modificación. Revisé el índice de variables pero no pude encontrar nada. Nginx agrega automáticamente la fecha de modificación al Last-Modified
encabezado, por lo que debería ser capaz de hacerlo. También intenté usarlo ssi_last_modified
, pero según algunas respuestas no funcionará porque NGINX nunca implementó SSI completo.
Respuesta1
La hora de modificación del archivo NO es la misma que la fecha de creación de la foto.
Si bien sería sencillo forzar que mtime coincida con los datos EXIF y usarlos como proxy para los datos que realmente desea informar, existen potencialmente otros datos que pueden incrustarse en el archivo y que podrían ser útiles. Esto suena como el problema XY.
Suponiendo que aún no tiene ninguna capacidad de servidor de aplicaciones en el host, agregarla solo para resolver este problema parece excesivo (y abre la puerta a muchas complicaciones de endurecimiento). Entonces, si fuera yo, simplemente escribiría un rastreador para volcar los datos en un formato legible por máquina dentro de la raíz del documento, por ejemplo.
#!/bin/bash
if [ ! -f /var/run/lastexif ] ; then
touch -t 198012250200 /var/run/lastexif
fi
mv -f /var/run/lastexif /var/run/lastexif.old
touch /var/run/lastexif
find /var/www/html/photo -type f -newer /var/run/lastexif.old | dump_exif_data
¿Dónde dump_exif_data
hay algo como...?
#!/bin/bash
while read fname
do
if [ -n "$fname" -a -f "$fname" ] ; then
exiftool "$fname" | tr -s ' ' > "${fname}.exif"
fi
done
Espolvoree un poco de magia ajax en sus páginas, agregue un trabajo cron (o trabajo incron) para ejecutar el script y listo.