在下面的程式碼中,我設定了一些帶有圖像資訊的變數(如標題、URL 等)
location /photo {
ssi on;
ssi_last_modified on;
set $photosrc /photos/$request_basename;
set $phototitle $request_basename;
...
}
我想在頁面上顯示照片的建立日期。理想情況下它應該在另一個變數中......:
...
set $photodate $???;
...
但 AFAICT 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 作業)來運行腳本並完成工作。