다음 코드에서는 이미지에 대한 정보(제목, 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 마법을 뿌리고 크론 작업(또는 인크론 작업)을 추가하여 스크립트를 실행하면 작업이 완료됩니다.