it-swarm.com.de

Wildcard-Subdomains auf https (nginx) umleiten

Ich habe eine Wildcard-SSL-Zertifizierung und versuche, den gesamten Nicht-SSL-Verkehr auf SSL umzuleiten. Derzeit verwende ich Folgendes, um die nicht untergeordnete URL umzuleiten, die einwandfrei funktioniert.

server {
listen      80;
server_name mydomain.com;

#Rewrite all nonssl requests to ssl.
rewrite     ^ https://$server_name$request_uri? permanent;
}

wenn ich dasselbe für * .mydomain.com mache, wird logischerweise zu weitergeleitet

https://%2A.mydomain.com/

Wie leiten Sie alle Subdomains auf ihre https-Entsprechung um?

20
whatWhat

Das ist alles...

server {
    listen      80;
    server_name *.mydomain.com;

     #Rewrite all nonssl requests to ssl.
     return 301 https://$Host$request_uri;
}
49
cadmi

In der offiziellen Dokumentation von NGINX wird empfohlen, die Rückgaberichtlinie anstelle der Umschreibeanweisung zu verwenden, um die Umleitung zu bewirken. Dies ist so, da die neu geschriebene Anforderung nicht für diesen Server bestimmt ist, sondern dennoch in diesem Serverblock verarbeitet wird. Daher werden Weiterleitungen stattdessen korrekt mit einer Rückgabeanweisung ausgeführt, da die gesamte Verarbeitung gestoppt und sofort eine Antwort gesendet wird. NGINX rät davon ab, die Umleitung hier neu zu schreiben: http://nginx.org/en/docs/http/converting_rewrite_rules.html

Die Syntax für die return-Direktive lautet: return code URL; Da Sie ursprünglich eine permanente Umschreibung durchgeführt haben, können Sie dementsprechend 301 als Code für die Antwort verwenden, um anzuzeigen, dass es sich um eine permanente Umleitung handelt. Ihre https-Adresse wird im URL-Bereich übergeben. Referenz: http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return

Ihre richtige Konfiguration wäre also

server {
listen      80;
server_name *.mydomain.com;

#Redirect all nonssl requests to ssl.
return 301 https://$server_name$request_uri;
}

Auf diese Weise können Sie wahrscheinlich mit einem Platzhalter-Serverblock korrekt zu Ihrer SSL-Domäne umleiten. Sie können auch den unterstrichenen generischen Servernamen '_' oder $ Host ausprobieren, wie im obigen Kommentar vorgeschlagen. Lass uns wissen!

2
Apurva Sukant