Algo parecido com isto pode funcionar (não testado!):
server {
server_name ~^www\.;
<deliver content here>
}
server {
server_name ~^(?!www\.);
location / {
return 302 $scheme://www.$host$request_uri;
}
}
Há outras opções faltando agora! Como "ouvir" e "local".
Você provavelmente deve adicionar outro bloco de servidor com o ip público do servidor que redireciona o tráfego não vhost para um site padrão.
Você deve prestar atenção à ordem em que a diretiva server_name é processada: link