想象一下,nginx正在提供一个由rsnapshot创build的静态图像文件夹:/rsnapshots/hourly.0/imageA.png /rsnapshots/hourly.0/imageB.png
所以,如果我去这里: http://example.com/hourly.0/imageA.png : http://example.com/hourly.0/imageA.png ,我看到ImageA.png
如果文件自上次备份以来没有更改,RSnapshot将只创build一个硬链接。 所以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 ,但我可以redirect到: http://example.com/hourly.1/imageB.png : http://example.com/hourly.1/imageB.png ,他们会得到相同的图像。
是否有可能为Nginx的A)检测硬链接B)redirect客户端“真实”的文件,如果它确实检测到?
编辑:正如迈克尔敏锐地观察到的,当涉及硬连接时,没有“真实”文件。 他们都只是指向同一个文件的指针。 在这种情况下,我可以考虑对我的问题进行两个修改:1)Nginx可以在请求时探测其他服务器目录,testing是否存在文件,如果在另一个path中find该文件,则将客户端redirect到另一个path。 2)如果我把我的问题中的“硬链接”replace为“符号链接”,我可以对符号链接进行testing,确定符号链接的位置,然后redirect到符号链接path吗?
AFAIK nginx不能这样做,但还有其他的方法可能,比如: