Представьте, что nginx обслуживает папку статических изображений, созданных rsnapshot: /rsnapshots/hourly.0/imageA.png /rsnapshots/hourly.0/imageB.png
Итак, если я пойду сюда: http://example.com/hourly.0/imageA.png
, Я вижу ImageA.png
RSnapshot просто создаст жесткую ссылку, если файл не изменился с момента последнего резервного копирования. Итак, image imageA.png не изменился, а B - нет. Итак, моя недавняя резервная копия на сайте hourly.0 теперь будет выглядеть так:
/rsnapshots/hourly.0/imageA.png
/rsnapshots/hourly.0/imageB.png -> /rsnapshots/hourly.1/imageB.png
imageB.png
это просто жесткая ссылка (а не символическая ссылка) на /rsnapshots/hourly.1/imageB.png.
Так что если клиент просит http://example.com/hourly.0/imageB.png
они получат imageB.png
, но я мог бы перенаправить их на: http://example.com/hourly.1/imageB.png
, и они получат то же изображение.
Возможно ли, чтобы nginx A) обнаружил жесткие ссылки B) перенаправил клиента на "настоящий" файл, если он его обнаружил?
Изменить: как проницательно заметил Майкл, когда речь идет о жестких ссылках, не существует "настоящего" файла. Они оба просто указатели на один и тот же файл. В этом случае я могу придумать две модификации своего вопроса: 1) Может ли Nginx проверять другие серверные каталоги по запросу, проверять наличие файла и, если он находит файл по другому пути, перенаправить клиента на другой путь. 2) Если я заменил "жесткие ссылки" в моем вопросе на "символические ссылки", могу ли я провести тест для символической ссылки, определить, куда идет символическая ссылка, а затем вместо этого перенаправить на путь символической ссылки?
AFAIK nginx не может этого сделать, но есть и другие способы, например: