Você pode usar um map no bloco http da seguinte forma:
map $http_host $rootdir {
"~^(?:www\.)?(<domain>.+)$ $domain;
}
E, em seguida, você usa o seguinte no bloco server :
root /var/www/$rootdir/public;
Na diretiva map , convertemos a variável $http_host contendo a solicitação HTTP Host header para $rootdir usando a expressão regular.
Na expressão regular, extraímos o nome do domínio real para a variável $domain do cabeçalho Host , excluindo o prefixo www. , se existir. Em seguida, usamos a variável $domain para criar a variável $rootdir .
No entanto, esse método pode não funcionar com SSL devido a motivos mencionados no comentário. Nesse caso, você precisa implementar um sistema de gerenciamento de configuração que gere arquivos de configuração para domínios a partir de modelos.