O nginx pode testar links físicos ou links simbólicos e redirecionar o cliente do navegador para a URL _real_?

1

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?

    
por Taytay 19.12.2014 / 21:25

1 resposta

1

O nginx do AFAIK não pode fazê-lo, mas existem outras formas possíveis, como:

  • gera o arquivo de configuração nginx com redirecionamentos após cada backup
  • adicione /elsewhere/index.php que usará $ _SERVER ['PATH_INFO'] para localizar e redirecionar para o arquivo mais novo, você então abrirá link
por 21.12.2014 / 23:55