Примерно так может работать (не проверено!):
server { server_name ~^www\.; <deliver content here> } server { server_name ~^(?!www\.); location / { return 302 $scheme://www.$host$request_uri; } }
Есть и другие варианты, отсутствующие сейчас! Как "слушать" и "местоположение".
Вероятно, вам следует добавить еще один блок сервера с общедоступным ip-адресом сервера, который перенаправляет трафик не vhost на сайт по умолчанию.
Вы должны обратить внимание на порядок, в котором обрабатывается директива server_name: http://nginx.org/en/docs/http/server_names.html