Nginx Leiten Sie alle Subdomains auf eine Nicht-Subdomain-URL um

1286
onek24

Ich habe gerade folgendes Problem und ich kann es nicht lösen. Die> 20 ähnlichen Threads, die ich bei Google gefunden habe, sind keine Hilfe.

Zuerst habe ich eine einfache HTTP-zu-HTTPS-Umleitung erstellt, die wie folgt aussieht:

server { listen 80; server_name my-domain.com; return 301 https://my-domain.com$request_uri; }  server { listen 443 ssl http2; server_name my-domain.com; ... } 

Und das funktioniert perfekt. Wenn ich versuche, my-domain.com zu öffnen, werde ich zu https: // my-domain.com weitergeleitet . Aber es gibt immer noch Probleme mit Subdomains. Wenn ich www.my-domain.com oder test.my-domain.com öffne, möchte ich, dass diese Subdomains zu meiner HTTPS- Stammdomäne umgeleitet werden : https: // my-domain.com. Ohne Subdomains davor. Dasselbe sollte für HTTPS-Subdomains gelten. Ich möchte buchstäblich jegliche Subdomains (vorerst) verbieten.

Ich habe schon viele Konfigurationen ausprobiert, wie zum Beispiel * .my-domain.com zum Servernamen hinzugefügt, und dies funktioniert trotzdem nicht wie erwartet. Ich habe auch versucht, eine HTTPS-Weiterleitung von * .my-domain.com zu meiner normalen HTTPS-Domäne zu erstellen, und trotzdem habe ich mit jeder Konfiguration ein ähnliches Ergebnis:

  1. Alle HTTP-Anforderungen führen zu einer HTTPS-URL, die die Unterdomäne enthält.
  2. Alle HTTPS-Anforderungen führen niemals zu einer HTTPS-URL OHNE einer Subdomäne.

Nun meine Frage: Wie kann ich jede Subdomain (http und https) an eine bestimmte https-URL umleiten, die KEINE Subdomain enthält? Jede Kombination sollte immer folgendes ergeben: https: // my-domain.com $ request_uri

Danke im Voraus

Aktualisieren:

Ich habe mein Problem nicht vollständig gelöst, aber ich habe etwas, mit dem ich leben kann. Ich habe in meiner Domänenkonfiguration einen CNAME von my-domain.com zu my-domain.com erstellt. Ich habe auch nginx geändert und eine neue Serverkonfiguration hinzugefügt, die von www.my-domain 443 zu https: // my-domain umleitet. Ich habe auch einen normalen Port 80 Server, der auch von www.my-domain zu https: // my-domain umleitet. Ich habe mein Zertifikat geändert und www.my-domain zur Liste der Domänen und Subdomains hinzugefügt. Nun wird jede Anfrage auf www.my-domain (http oder https) an https: // meine-Domain weitergeleitet . Auch meine-Domain (http und ohne www.) Wird zu https: // my-domain umgeleitet . Das scheint für meine Bedürfnisse "okay" zu sein.

1

1 Antwort auf die Frage

0
Richard Smith

Sie können einen default_serverBlock verwenden, um alle Domänen httpund httpsDomänen zu finden, die nicht explizit in einem anderen serverBlock definiert sind. Das httpsTeil funktioniert nur ordnungsgemäß mit Wildcard-Zertifikaten.

server { listen 80 default_server; listen 443 ssl default_server; ... ssl configuration return 301 https://example.com$request_uri; }  server { listen 443 ssl http2; ... } 

Einzelheiten finden Sie in diesem Dokument .