A resposta do pjmorse é boa (então eu inventei isso), mas eu uso um esquema ligeiramente diferente em a.domain:
server {
server_name a.domain.com c.domain.com d.domain.com; # you can serve any number of redirects from here...
listen 80;
rewrite (.*) http://b.domain.com$1 permanent;
}
Isso retorna um código de retorno HTTP 301 (movido permanentemente) em vez dos 307 que alguns servidores da Web podem retornar.