try_files é um verificador de existência de arquivo simples. Ele simplesmente verifica se o arquivo ( $uri ) ou diretório ( $uri/ ) existe.
Se nenhum desses existir, ele retornará o erro 404.
Se o arquivo existir, a execução continuará para a próxima linha, ou seja, fastcgi_pass ou proxy_pass ou qualquer outra coisa que tenha sido configurada.
Portanto, o comportamento de try_files é independente de fastcgi_pass ou proxy_pass .
try_files sempre usa a diretiva root para verificar a existência do arquivo.
Em seguida, a solução para o problema original de possíveis explorações via arquivos .gif é incluir essa diretiva no bloco de localização do PHP:
fastcgi_split_path_info ^(.+\.php)(/.+)$;
Você também precisa definir cgi.fix_pathinfo para false em php.ini.
Desta forma, o PHP obtém o nome correto do arquivo PHP como o script a ser executado.