Imagine que o nginx está exibindo uma pasta de imagens estáticas criadas pelo rsnapshot:
/rsnapshots/hourly.0/imageA.png
/rsnapshots/hourly.0/imageB.png
Então, se eu for aqui:
http://example.com/hourly.0/imageA.png
, vejo ImageA.png
O RSnapshot só criará um link físico se o arquivo não tiver sido alterado desde o último backup. Então imagem imageA.png não mudou, mas B não mudou. Então, meu backup recente em hourly.0 agora ficará assim:
/rsnapshots/hourly.0/imageA.png
/rsnapshots/hourly.0/imageB.png -> /rsnapshots/hourly.1/imageB.png
imageB.png
é apenas um link físico (não um link simbólico) para /rsnapshots/hourly.1/imageB.png.
Portanto, se o cliente solicitar http://example.com/hourly.0/imageB.png
, ele receberá imageB.png
, mas eu poderia redirecioná-lo para: http://example.com/hourly.1/imageB.png
e ele obteria a mesma imagem.
É possível que o nginx
A) Detectar links físicos
B) redirecionar o cliente para o arquivo "real" se ele detectá-lo?
Editar:
Como Michael astutamente observou, não há arquivos "reais" quando se trata de hardlinks. Ambos são apenas ponteiros para o mesmo arquivo.
Nesse caso, posso pensar em duas modificações na minha pergunta:
1) O Nginx pode pesquisar outros diretórios do servidor em uma solicitação, testar a existência do arquivo e, se encontrar o arquivo em outro caminho, redirecionar o cliente para o outro caminho.
2) Se eu substituí "hard links" na minha pergunta por "symlinks", posso fazer um teste para o symlink, determinar onde o symlink vai, e então redirecionar para o caminho do symlink?