Nginx catch all domain, dann www hinzufügen, falls nicht vorhanden

1086
Syed

Dieses Setup ist für die gemeinsame Nutzung mehrerer Domänen mit einer einzigen CMS-Plattform vorgesehen. Dadurch kann jede Domäne auf meine Server-IP verweisen.

Ich kann nginx server_name _ verwenden. um alles zu fangen.

Aber dann würde ich gerne die 301 an www weiterleiten (anfügen an www. Infront), wenn www nicht anwesend ist. Wenn www vorhanden ist, ist es in Ordnung.

Wie kann ich das erreichen?

1

1 Antwort auf die Frage

0
unNamed

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