Nginx leitet alle Subdomains auf eine Nicht-Subdomain-URL um

Nginx leitet alle Subdomains auf eine Nicht-Subdomain-URL um

Ich habe derzeit folgendes Problem und kann es einfach nicht lösen. Die > 20 ähnlichen Threads, die ich bei Google gefunden habe, helfen mir nicht weiter.

Zuerst habe ich eine einfache Weiterleitung von HTTP zu HTTPS erstellt, die folgendermaßen 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 einwandfrei. Wenn ich versuche, zu öffnenmeine-domain.com, ich werde weitergeleitet zuhttps:// meine-domain.com. Aber es gibt immer noch das Problem mit Subdomains. Wenn ich öffnewww.meine-domain.comodertest.meine-domain.com, ich möchte, dass diese Subdomains zu meinem Stammverzeichnis umgeleitet werdenHTTPSDomäne: https:// meine-Domäne.com. Ohne jegliche Subdomänen davor. Dasselbe sollte für HTTPS-Subdomänen erscheinen. Ich möchte (vorerst) alle Subdomänen verbieten.

Ich habe viele Konfigurationen ausprobiert, wie das Hinzufügen*.meine-domain.comzum Servernamen, und trotzdem funktioniert das 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 bei jeder Konfiguration ein ähnliches Ergebnis:

  1. Alle HTTP-Anfragen führen zu einer HTTPS-URL, die die Subdomäne enthält.
  2. Keine HTTPS-Anfragen führen jemals zu einer HTTPS-URL OHNE eine darin enthaltene Subdomäne.

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

Dank im Voraus

Aktualisieren:

Das hat 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 www.my-domain.com zu my-domain.com erstellt. Ich habe auch nginx geändert und eine neue Serverkonfiguration hinzugefügt, die von 443 www.my-domain 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 Subdomänen hinzugefügt. Jetzt wird jede Anfrage an www.my-domain (http oder https) umgeleitet zuhttps://meine-domain. Auch meine-Domain (http und ohne www.) wird umgeleitet aufhttps://meine-domainauch. Das scheint für meine Bedürfnisse "okay" zu sein.

Antwort1

Sie können einen Block verwenden , um alle Domänen default_serverabzugleichen, die nicht explizit in einem anderen Block definiert sind. Der Teil funktioniert nur mit Platzhalterzertifikaten ordnungsgemäß.httphttpsserverhttps

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

server {
    listen 443 ssl http2;
    ...
}

Sehendieses Dokumentfür Details.

verwandte Informationen