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.