Nginx Servername-Problem bei HTTPS für mehrere Anwendungen (vhosts)

Nginx Servername-Problem bei HTTPS für mehrere Anwendungen (vhosts)

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.pngwird 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:

abc.conf

def.conf

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_serverOption tatsächlich als Teil der listenDirektive 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.

verwandte Informationen