Seu bloco location ~ \.php$ aninhado não encontrará seus scripts PHP. O $document_root está definido como /path/to/php-app . E $fastcgi_script_name é o mesmo que $uri , que ainda inclui o prefixo /app .
A abordagem correta é usar $request_filename e remover sua falsa declaração root :
location ^~ /app {
alias /path/to/php-app;
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
Sempre inclua fastcgi_params antes de qualquer instrução fastcgi_param para evitar que sejam sobrescritos silenciosamente pelo conteúdo do arquivo de inclusão. Consulte este documento para obter detalhes.