Im folgenden Code lege ich einige Variablen mit Informationen zum Bild fest (wie Titel, URL usw.).
location /photo {
ssi on;
ssi_last_modified on;
set $photosrc /photos/$request_basename;
set $phototitle $request_basename;
...
}
Ich möchte das Erstellungsdatum des Fotos auf der Seite anzeigen. Idealerweise sollte es in einer anderen Variable stehen…:
...
set $photodate $???;
...
aber soweit ich weiß, gibt es in NGINX keine Variable, die das Datum der letzten Änderung enthält. Ich habe den Variablenindex durchgesehen, aber nichts gefunden. Nginx fügt das Änderungsdatum automatisch zum Last-Modified
Header hinzu, also sollte es dazu in der Lage sein. Ich habe auch versucht, es zu verwenden, ssi_last_modified
aber einigen Antworten zufolge funktioniert es nicht, da NGINX nie vollständiges SSI implementiert hat.
Antwort1
Der Änderungszeitpunkt der Datei ist NICHT dasselbe wie das Erstellungsdatum des Fotos.
Es wäre zwar einfach, die Mtime so zu zwingen, dass sie mit den EXIF-Daten übereinstimmt, und diese als Proxy für die Daten zu verwenden, die Sie tatsächlich melden möchten, aber es gibt möglicherweise andere Daten, die in die Datei eingebettet werden können und nützlich sein könnten. Das klingt nach dem XY-Problem.
Vorausgesetzt, Sie verfügen noch nicht über eine Anwendungsserverfunktionalität auf dem Host, dann erscheint das Hinzufügen einer solchen nur zur Lösung dieses Problems übertrieben (und öffnet die Tür zu vielen Härtungskomplikationen). Wenn es nach mir ginge, würde ich einfach einen Crawler schreiben, der die Daten in ein maschinenlesbares Format im Dokumentstamm kopiert, z. B.
#!/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
Wo dump_exif_data
gibt es sowas wie....
#!/bin/bash
while read fname
do
if [ -n "$fname" -a -f "$fname" ] ; then
exiftool "$fname" | tr -s ' ' > "${fname}.exif"
fi
done
Streuen Sie etwas Ajax-Magie auf Ihre Seiten, fügen Sie einen Cron-Job (oder Incron-Job) hinzu, um das Skript auszuführen, und schon ist die Arbeit erledigt.