Ich habe zwei Anwendungen auf dem Server, die perfekt funktionierten, bis ich vorhatte, sie auf HTTPS umzustellen.
Nginx-Konfiguration für App 1:
server_name abc.com my.abc.com static.abc.com
Konfidenz für App 2:
server_name _;
Vor der Aktivierung von SSL funktionierten beide Apps, z. B.
App1http://static.abc.com/some-assets.png
App2http://static.def.com/some-assets.png
Nach der Aktivierung von SSL
App1https://static.abc.com/some-assets.png
App2https://static.def.com/some-assets.png
Wenn ich jetzt versuche, auf App2 zuzugreifen, https://static.def.com/some-assets.png
wird irgendwie auch auf App 1 verwiesen.
Ich habe versucht, es herauszufinden und festgestellt, dass es funktioniert, wenn ich es in der App 2-Nginx-Konfiguration server_name _;
ersetze .server_name static.def.com;
Meine Frage ist, ob Nginx die Domänen explizit definieren muss, wenn Sie sie über HTTPS bereitstellen möchten. Oder liegt es daran, dass der SSL-Handshake fehlschlägt usw. und es so endet?
Aktualisieren:
Nginx-Konfigurationsdateien:
Antwort1
Wie Johannes schon sagte, haben Sie meiner Meinung nach eine falsche Vorstellung davon, was _
ein server_name
: absolut nichts bedeutet. Die meisten Anleitungen schließen es in ihren standardmäßigen Catch-All-Server ein, um sicherzugehen, dass es keinen benannten virtuellen Server stört.
Was Sie in dem, was Sie lesen, übersehen haben müssen (oder vielleicht haben es die Leute, die das geschrieben haben, was Sie lesen), ist, dass ein richtiger Standardserver die default_server
Option tatsächlich als Teil der listen
Direktive einschließt. Weitere Informationen finden Sie unter nginx.org/r/listen.
Antwort2
Dies hängt möglicherweise von der Reihenfolge Ihrer Serverdefinitionen ab. _
ist kein spezieller Name, sondern nur eine ungültige Domäne und wird daher nie übereinstimmen. Das bedeutet, dass ist derselbe wie die Servernamen in der anderen Serverdefinition für einen Host wie static.def.com
: Beide stimmen nicht überein. Wenn überhaupt keine Übereinstimmung vorliegt, übernimmt nginx einfach die erste Serverdefinition.