Verwenden Sie für verschiedene .local-Domänen unterschiedliche Nginx-Server

Verwenden Sie für verschiedene .local-Domänen unterschiedliche Nginx-Server

Ich versuche, verschiedene Server auf verschiedenen .localDomänen auf meinem RPi auszuführen. Dies ist meine nginx default.conf

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;
    server_name raspberrypi.local;
}

/etc/hostsDatei -

127.0.0.1   localhost
::1     localhost ip6-localhost ip6-loopback
ff02::1     ip6-allnodes
ff02::2     ip6-allrouters

127.0.1.1       raspberrypi

Jetzt avahi-publishverwende ich einen Alias ​​für eine andere Domain

avahi-publish -a -R foo.local 192.168.68.120

Aber wenn ich auf diese Domäne zugreife, wird auch das Standard-HTML von Nginx angezeigt, was ich nicht möchte. Ich verstehe, dass ich noch keinen anderen Server konfiguriert habe, der auf dieser Domäne läuft, aber ich gehe davon aus, dass die Meldung „Verbindung nicht möglich“ oder „nicht erreichbar“ angezeigt wird.

Wenn dies nicht möglich ist, gibt es eine Möglichkeit, mehrere .localDomänennamen zu haben, die keine Aliase sind?

Antwort1

Aber wenn ich auf diese Domäne zugreife, wird auch das Standard-HTML von Nginx angezeigt, was ich nicht möchte. Ich verstehe, dass ich noch keinen anderen Server konfiguriert habe, der auf dieser Domäne läuft, aber ich gehe davon aus, dass die Meldung „Verbindung nicht möglich“ oder „nicht erreichbar“ angezeigt wird.

Sie erhalten keine Meldung „Verbindung nicht möglich“, weil Sie Nginx so konfiguriert haben, dass es aufalleAdressen für diesen Server – das bedeutet hier: Wenn er auf aka listen *:80lauscht, akzeptiert er Verbindungen zu jeder lokalen IPv4-Adresse. (Dasselbe gilt für IPv6.)0.0.0.0*[::]

(Die server_nameOption hat hierauf keinen Einfluss – sie wählt lediglich den richtigen Server{}-Block basierend auf dem HTTP-Header „Host“ in der empfangenen Anfrage aus.nachdie Verbindung wurde hergestellt. Mit anderen Worten, es werden namensbasierte virtuelle Hosts implementiert, statt IP-basierte.)

Wenn die virtuellen Hosts IP-basiert sein sollen, ändern Sie Ihre Server{}-Blöcke so, dass sie auf bestimmten IP-Adressen statt auf der Platzhalteradresse lauschen:

server {
    listen 192.168.68.xxx:80;
}

Beachten Sie, dass dies fehlschlägt, wenn Nginx gestartet wird, bevor die Adresse einer Schnittstelle zugewiesen wurde. (Dies könnte vermieden werden durchIP_FREEBINDaber es scheint, dass Nginx das noch nicht unterstützt.)

verwandte Informationen