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.