nginx try_files com imagem estática ou fallback para o arquivo php com reescrita

1
location /image_mini {
#  try_files /static_images/$2.jpg;
  rewrite ^/image_mini/([^.]+)-00([0-9]+)\.jpg$ /image.php?a=$2 last;
}

Eu uso essa regra de reescrita para exibir imagens no meu site. Por exemplo, se eu quiser exibir o ID da imagem # 123456789, usarei o link

Em seguida, image.php irá verificar se /static_images/00123456789.jpg é encontrado no cache local, caso contrário ele irá criar o arquivo.

Suponho que obteria um desempenho muito melhor se o nginx pudesse procurar o arquivo estático local antes de fazer fallback para image.php

Eu tentei fazer isso com try_files, mas não tenho certeza de como extrair o ID da imagem da URL e estou preso aqui :( Qualquer ajuda seria apreciada

    
por wsmith1984 08.04.2018 / 23:06

1 resposta

0

Você pode usar sua expressão regular na instrução location . Por exemplo:

location ~* ^/image_mini/[^.]+-00([0-9]+)\.jpg$ {
    try_files /static_images/$1.jpg /image.php?a=$1;
}

Observe que a avaliação da expressão regular location instruções está ordenada. Consulte este documento para saber mais. Além disso, este documento na sintaxe correta de try_files .

    
por 09.04.2018 / 10:50