No código a seguir estou definindo algumas variáveis com informações sobre a imagem (como título, URL, etc.)
location /photo {
ssi on;
ssi_last_modified on;
set $photosrc /photos/$request_basename;
set $phototitle $request_basename;
...
}
Gostaria de mostrar a data de criação da foto na página. Idealmente deveria estar em outra variável…:
...
set $photodate $???;
...
mas AFAICT não há variável no NGINX que contenha a data da última modificação. Examinei o índice da variável, mas não consegui encontrar nada. O Nginx adiciona automaticamente a data de modificação ao Last-Modified
cabeçalho, portanto deve ser capaz disso. Também tentei usar, ssi_last_modified
mas de acordo com algumas respostas não funcionou porque o NGINX nunca implementou SSI completo.
Responder1
O horário de modificação do arquivo NÃO é igual à data de criação da foto.
Embora fosse simples forçar o mtime a corresponder aos dados EXIF e usá-los como um proxy para os dados que você realmente deseja relatar, há potencialmente outros dados que podem ser incorporados no arquivo que podem ser úteis. Isso soa como o problema XY.
Supondo que você ainda não tenha nenhum recurso de servidor de aplicativos no host, adicioná-lo apenas para resolver esse problema parece um exagero (e abre a porta para muitas complicações de proteção). Então, se fosse eu, eu simplesmente escreveria um rastreador para despejar os dados em um formato legível por máquina dentro da raiz do documento, por exemplo
#!/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
Onde dump_exif_data
está algo como ....
#!/bin/bash
while read fname
do
if [ -n "$fname" -a -f "$fname" ] ; then
exiftool "$fname" | tr -s ' ' > "${fname}.exif"
fi
done
Espalhe um pouco da magia do ajax em suas páginas, adicione um cron job (ou incron job) para executar o script e o trabalho estará concluído.