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:
- Alle HTTP-Anfragen führen zu einer HTTPS-URL, die die Subdomäne enthält.
- 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_server
abzugleichen, die nicht explizit in einem anderen Block definiert sind. Der Teil funktioniert nur mit Platzhalterzertifikaten ordnungsgemäß.http
https
server
https
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.