在下面的代码中,我设置了一些有关图像的信息变量(例如标题、URL 等)。
location /photo {
ssi on;
ssi_last_modified on;
set $photosrc /photos/$request_basename;
set $phototitle $request_basename;
...
}
我想在页面上显示照片的创建日期。理想情况下,它应该在另一个变量中……:
...
set $photodate $???;
...
但据我所知,NGINX 中没有包含最后修改日期的变量。我查看了变量索引,但什么也没找到。Nginx 会自动将修改日期添加到标Last-Modified
头,因此它应该能够做到这一点。我也尝试过使用,ssi_last_modified
但根据一些答案,它不起作用,因为 NGINX 从未实现完整的 SSI。
答案1
文件修改时间与照片创建日期不同。
虽然强制 mtime 与 EXIF 数据匹配并将其用作您实际想要报告的数据的代理很简单,但文件中可能还嵌入了其他有用的数据。这听起来像是 XY 问题。
假设主机上还没有任何应用服务器功能,那么仅仅为了解决这个问题而添加它似乎有点矫枉过正(并且会带来很多强化复杂性)。所以如果是我,我只需编写一个爬虫程序,将数据转储为文档根目录中的机器可读格式,例如
#!/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
dump_exif_data
类似....的东西在哪里
#!/bin/bash
while read fname
do
if [ -n "$fname" -a -f "$fname" ] ; then
exiftool "$fname" | tr -s ' ' > "${fname}.exif"
fi
done
在您的页面上添加一些 ajax 魔法,添加一个 cron 作业(或 incron 作业)来运行脚本并完成作业。