So etwas könnte funktionieren (nicht getestet!):
server { server_name ~^www\.; <deliver content here> } server { server_name ~^(?!www\.); location / { return 302 $scheme://www.$host$request_uri; } }
Es fehlen jetzt andere Optionen! Wie "hören" und "Ort".
Sie sollten wahrscheinlich einen weiteren Serverblock mit der öffentlichen IP-Adresse des Servers hinzufügen, der den Nicht-Vhost-Verkehr zu einer Standard-Site umleitet.
Sie sollten auf die Reihenfolge achten, in der die Anweisung server_name verarbeitet wird: http://nginx.org/de/docs/http/server_names.html