Você pode emular os MultiViews do Apache, passando os vários nomes de arquivos para tentar try_files .
A diretiva try_files do Nginx faz exatamente o que o nome sugere - tenta arquivos na ordem em que são especificados, e se não for encontrado, passará para o próximo arquivo. Normalmente, a última entrada é um fallback com garantia de funcionamento - um bloco de localização nomeado ou uma página de erro.
Os parâmetros comumente encontrados de try_files : $uri e $uri/ são realmente os caminhos passados para nginx - com e sem a barra final.
Então, se você for para example.com/path/to/myfile
$uri = /path/to/myfile
$uri/ = /path/to/myfile/
Com a diretiva try_files $uri $uri/ , o nginx tentará exatamente o que é passado ( $uri ) - e se esse arquivo existir, será veiculado, caso contrário, tentará encontrar um diretório correspondente ( $uri/ ) e servirá isso ( usando o índice que você especificou).
Como os arquivos que você está tentando veicular não correspondem realmente ao caminho em $uri , é necessário anexar a extensão a $uri para que funcione:
$uri.jpg corresponderá (do exemplo acima) myfile.jpg - daí porque somente os JPEGs funcionaram quando você o usou.
Como você pode especificar vários arquivos para experimentar em try_files , ter mais de uma diretiva try_files não faz sentido, e é por isso que não é permitido.
Em sua forma mais simples, portanto, apenas liste os arquivos desejados, na ordem em que você deseja testá-los (por exemplo,
try_files $uri.jpg $uri.gif $uri.png $uri.css $uri.js $uri/ =404
O segundo bloco de localização é interessante neste caso. Normalmente, o nginx processa apenas um bloco de localização - aquele que corresponde melhor. No entanto, no caso de rewrite ... last , o processamento será reiniciado e todos os blocos de localização disponíveis serão verificados. Isso é essencialmente o que try_files equivale a - verifique se existe e rewrite ... last , a diferença principal é a ausência dos argumentos aprovados, que são removidos por try_files , a menos que sejam explicitamente adicionados (por exemplo, com $uri?$args ).