Ich habe mehrere "Server" -Blöcke in meiner nginx.conf. Die Dokumentation scheint in Bezug auf die Reihenfolge, in der der Servername-Abgleich stattfindet, falsch zu sein.
Mein Conf sieht ungefähr so aus:
server {
listen 80
server_name domain.com *.domain.com
# do stuff
}
server {
listen 80
server_name sub.domain.com *.sub.domain.com
# do something else
}
Ich versuche herauszufinden, warum Anfragen mit host = www.sub.domain.com an den richtigen Ort (den zweiten Server) gehen, wenn die Dokumentation angibt, dass sie an den ersten Server gehen sollen.
Aus der Nginx-Dokumentation geht hervor, dass die Serverblöcke "in der richtigen Reihenfolge" auf Übereinstimmungen überprüft werden. Dies bedeutet, dass jede Anfrage an den Host * subdomain.com vom ersten Server und nicht vom zweiten Server abgefangen werden sollte. ( http://wiki.nginx.org/HttpCoreModule#server_name )
Außerdem entspricht der Platzhalter * einer beliebigen Anzahl von Subdomain-Teilen, sodass * .domain.com mit www.sub.domain.com übereinstimmt. ( http://nginx.org/en/docs/http/server_names.html#wildcard_names )
Wenn diese Dokumentation falsch ist, wie lautet die tatsächliche Übereinstimmungsreihenfolge?