O elemento final da instrução try_files é um URI. O URI do script que você deseja é presumivelmente /v1/merchants/index.php . Consulte este documento para obter detalhes.
Se o arquivo estiver localizado em /var/www/public/api-merchants/index.php , você deve usar uma diretiva alias e não uma diretiva root . Consulte este documento para obter detalhes.
Você não tem meios para executar arquivos PHP dentro dessa nova raiz, então o seu bloco location ~ \.php location assumirá. Você precisa usar um bloco de localização aninhado e replicar sua instrução PHP (por exemplo, fastcgi_pass ) dentro dela. Além disso, use o modificador ^~ para impedir que o outro bloco de localização location ~ \.php assuma o controle. Consulte este documento para obter detalhes.
Por exemplo:
location ^~ /v1/merchants {
alias /var/www/public/api-merchants;
if (!-e $request_filename) { rewrite ^ /v1/merchants/index.php last; }
location ~ \.php$ {
if (!-f $request_filename) { return 404; }
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass ...;
}
}
Evito usar try_files com alias devido a problema . Observe este aviso sobre o uso de if .