Nginx widersprüchlicher Servername für Subdomain

12

Ich habe derzeit einen vhost auf Nginx für foo.domain.com und alles funktioniert großartig.

Ich habe eine neue Datei für eine neue Subdomain namens bar.domain.com erstellt, die ich hinzufügen möchte. Ich verwende für beide die gleichen Einstellungen.

Wenn ich Nginx neu starte, bekomme ich

Restarting nginx: nginx: [warn] conflicting server name "" on 0.0.0.0:443, ignored nginx.

Wenn ich zu bar.domain.com gehe, sehe ich, was ich sehen soll, aber wenn ich zu foo.domain.com gehe, sehe ich die Seite, auf die bar.domain.com verweist.

Foo

upstream php-handler {
    server unix:/var/run/php5-fpm.sock;
}

server {
        listen 80;
        server_name foo.domain.com;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443;

        ssl on;
        ssl_certificate      [path_foo]/cacert.pem;
        ssl_certificate_key  [path_foo]/privkey.pem;

        root [path]/foo;

        ...
}

Bar

server {
        listen 80;
        server_name bar.domain.com;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443;

        ssl on;
        ssl_certificate      [path_bar]/cacert.pem;
        ssl_certificate_key  [path_bar]/privkey.pem;

        root [path]/bar;
}

Wo gehe ich falsch?

RockJake28
quelle
Sie müssen dies auch server_namein der SSL (443) -Konfiguration angeben .
Zakjan
Wie in nach listen 443auf jedem Server hinzufügen server_name [foo/bar].domain.com?
RockJake28

Antworten:

9

Sieht für mich so aus, als müssten für Ihre https-Blöcke auch Servernamen angegeben werden, z

server {
    listen 443;
    server_name bar.domain.com;
    ssl on;
    ssl_certificate      [path_bar]/cacert.pem;
    ssl_certificate_key  [path_bar]/privkey.pem;

    root [path]/bar;
}
Lloyd Wilson
quelle
3

Möglicherweise enthalten Sie auch zusätzliche Dateien /etc/nginx/sites-available/<site-name>, mit denen verknüpft ist /etc/nginx/sites-enabled/<site-name>.

Die Einstellungen in diesen Dateien können mit der /etc/nginx/sites-available/defaultDatei in Konflikt stehen

Hanxue
quelle
2

Ich hatte ein ähnliches Problem, als ich versehentlich einen doppelten Servernamen hatte:

server_name myserver.example.com myserver.example.com;

Behoben durch Ändern in:

server_name myserver.example.com;
Steve Tauber
quelle
2

Überprüfen Sie auch jede Datei /etc/nginx/conf.dauf Duplikate.

In meinem Fall nginx -tTests bestanden - Ich habe diese Fehlermeldung erhalten, als ich versucht habe, nginx zu starten.

Meine /etc/nginx/sites-enabledDateien waren frei von Domain (Servername) Duplikate und hatte nur 1 Verweis auf server_default(und keine localhostDuplikate)

Stattdessen gab es 2 Dateien, in conf.ddenen beide auf eine bestimmte Domäne verwiesen (dh 2 Dateien hatten eine Zeile wie : servername mydomain.com, wobei einer der Domänennamen in 2 Dateien aufgeführt war).

Meine Lösung: Stellen Sie also sicher, dass alle Dateien höchstens einmal auf conf.deinen bestimmten servernameWert (Domainnamen) verweisen .


( Leider wird nach Behebung des oben genannten Problems jetzt
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) Folgendes angezeigt : Fehlermeldungen, wenn ich versuche, nginx neu zu starten.)

Update : FYI, re: ... Address already in useFehlermeldung oben:
Alles was ich tun musste war sudo fuser -k 80/tcpdann service nginx restartwie ein Zauber zu arbeiten!
Ich fand die Antwort hier: https://easyengine.io/tutorials/nginx/troubleshooting/emerg-bind-failed-98-address-already-in-use/

update2 :
Es wurde vermutet, dass ein anderer Prozess Port 80 verwendet hat (weshalb das Beenden funktioniert hat und auch sinnvoll ist, dass b / c nginx zu diesem Zeitpunkt nicht ausgeführt wurde).
https://community.letsencrypt.org/t/nginx-emerg-bind-to-80-failed-98-address-already-in-use/52914/4

Sie weisen auch darauf hin, dass das Sehen des Prozesses, bevor er nur beendet wird, einen Einblick in die Ursachen des Problems geben kann.
Daher ist es wahrscheinlich besser, entweder: sudo fuser -k 80/tcp(ohne die Option -k) zu verwenden, gefolgt von a grepfür diese Prozessnummern.
systemctl list-unit-filesAusgabe, kann Einblick in widersprüchliche Prozesse geben

oder :
fuser -kivn tcp 80, wobei:
-vden Prozessnamen zusätzlich zur Prozess-ID druckt,
-iwird er aufgefordert, bevor
https://community.letsencrypt.org/t/nginx-emerg-bind-to-80-failed-98-address-already- beendet wird. in Gebrauch / 52914/5

SherylHohman
quelle
0

In meinem Fall konnte ich kein Duplikat finden. Ich hatte jedoch die default.conf, in der ich die gesamte Konfiguration mit Ausnahme des öffnenden Serverblocks und der schließenden Klammer kommentierte ... und dies verursachte den widersprüchlichen Fehler.

Grundsätzlich war es ein nicht berücksichtigter Serverblock OHNE eine Servername-Direktive, die das Problem verursachte, keine doppelte.

Dario Zadro
quelle