Como as capturas nomeadas do nginx 0.8.25 podem ser usadas no server_name. Você deveria usá-los.
Aqui, o subdomínio será armazenado em uma variável chamada $sub . Então você poderá reutilizá-lo na diretiva rewrite :
server {
listen 80;
server_name ~^(?<sub>\w+)\.olddomain\.com$;
rewrite ^ $scheme://$sub.doma.in$request_uri? permanent;
}
Como alternativa, você pode manter seu Regex real e usar $1 em uma diretiva return :
server {
listen 80;
server_name ~^(\w+)\.olddomain\.com$;
return 301 $scheme://$1.doma.in$request_uri;
}
Por fim, observe que a diretiva return é a melhor abordagem para um redirecionamento. Você pode encontrar Pitfalls usando rewrite para um redirecionar.