Nginx-Serverblöcke: Subdomains vs. Pfade

Nginx-Serverblöcke: Subdomains vs. Pfade

Was ist der Unterschied zwischen Subdomains und Standortpfaden
Beispiel:

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

    server_name xxxx.yyy.com;

    location / {

        proxy_pass http://127.0.0.1:3000;

    }

}

oder

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

    server_name yyy.com;

    location / {

        proxy_pass http://127.0.0.1:3000;

    }
    location /xxxx/ {

        proxy_pass http://127.0.0.1:4000;

    }

}

offensichtlich ist die Trennungsebene unterschiedlich, die erste wird auf den DNS-Servern getrennt und die zweite erfolgt in nginx selbst. Was mich interessiert, ist, welche Vorsichtsmaßnahmen zu treffen sind, wenn man sich für eine Lösung gegenüber der anderen entscheidet.

Antwort1

Sie können NGINX anweisen, auf alle Anfragen an eine IP-Adresse oder einen Port zu antworten, wenn Sie möchten. Subdomains/Domains in der Konfiguration begrenzen lediglich die Antworten von einem bestimmten „Server“-Konfigurationsblock.

Standort hatNichtsmit Domänen/Subdomänen zu tun, außer dass sie von dem leben, was im Serverblock konfiguriert ist. Im Allgemeinen konfigurieren Sie für NGINX als Erstes Ihre Domänen und IP zum Abhören und vergessen das dann vollständig.

Ihr erstes Beispiel richtet xxxx.yyy.com=> einhttp://127.0.0.1:3000

Das zweite Beispiel richtet yyy.com/xxxx=> einhttp://127.0.0.1:4000

Sie können Beispiel Nr. 1 mit Beispiel Nr. 2 kombinieren, indem Sie sowohl die Basisdomäne als auch die Subdomäne in den Serverblock von Nr. 2 einfügen (wenn es Ihnen egal ist, dass beide Pfade sowohl für die Basisdomäne als auch für die Subdomäne funktionieren):


server {

    listen 80 default_server;
    listen [::]:80 default_server;

    server_name yyy.com xxxx.yyy.com;

    location / {

        proxy_pass http://127.0.0.1:3000;

    }

    location /xxxx/ {

        proxy_pass http://127.0.0.1:4000;

    }
}

Sie sehen also, dass es keine „Trennung beim DNS“ gibt, wie Sie sagen – es sei denn, Sie hosten diese auf unterschiedlichen IP-Adressen. Die einzige Trennung besteht in den Pfaden.

Das kombinierte Beispiel ergibt:

xxxx.yyy.com=>http://127.0.0.1:3000

yyy.com=>http://127.0.0.1:3000

yyy.com/xxxx=>http://127.0.0.1:4000

xxxx.yyy.com/xxxx=>http://127.0.0.1:4000

Subdomänen sind keine Pfade. Sie sind völlig unterschiedliche Dinge. Der Versuch, sie zu vergleichen und gegenüberzustellen, lässt also darauf schließen, dass Sie mit Ihrem Verständnis völlig auf dem Holzweg sind.

Vielleicht hatten Sie in der Vergangenheit irgendwo eine Subdomain, bei der Sie ein Verzeichnis für eine Subdomain und ein anderes Verzeichnis für die Hauptdomain hatten. Dies sind Ihre Docroots, und dies ist einfach die Art und Weise, wie einige webbasierte Serveradministrationstools die Dinge standardmäßig konfigurieren. Es gibt keine inhärente Verbindung zwischen Subdomains und Pfaden, es sei denn, Sie (oder ein Tool oder ein Systemadministrator) erstellen eine.

Sie können jede Domäne oder Subdomäne – oder jeden Pfad, den Sie in einem Standortblock festlegen – auf jeden beliebigen Pfad in Ihrem Dateisystem zuordnen.

Bei der Lage dreht sich alles um WEGE… und auch hier gilt: Nachdem NGINX eine Anfrage gefunden hat, die mit dem Serverblock übereinstimmt, sucht es nach Anfragen, die mit dem Pfad in der HTTP-Anfrage übereinstimmen.

/thispath /thatpath /foo /bar oder /foo/bar/on/thatpath oder Sie können Platzhalter und reguläre Ausdrücke verwenden. Sie können verschiedene Dateierweiterungen so konfigurieren, dass sie aus verschiedenen Verzeichnissen bereitgestellt werden. Eine häufige Verwendung von location besteht darin, NGINX mitzuteilen, wie bestimmte Dateitypen wie PHP verarbeitet werden sollen.

Hier sind einige Beispielkonfigurationen aufgeführt:http://nginx.org/en/docs/beginners_guide.html

Wenn Sie dies hilfreich finden, bewerten Sie es bitte positiv oder markieren Sie es als Lösung. Danke!

Antwort2

Da es um die Konfiguration von Nginx geht, gibt es keine Trennung auf DNS-Ebene, wenn beide Domänen auf dieselbe IP/den gleichen Server verweisen.
Der Unterschied besteht darin, in welchen Domänen welche Pfade verfügbar/verwaltet sind.
Sie können mehrere Domänen mit denselben Standorten, aber einer anderen Domäne konfigurieren. Das ist die Hauptverwendung von server_name.

locationBlöcke sind der Teil der URL nach dem Domänennamen/der IP.
http://www.example.com/location/ Sie können verschiedene lokale Pfade in verschiedenen Standortblöcken/URLs verfügbar machen.

Was Sie mit DNS erreichen können, unterscheidet sich von der Nginx-Konfiguration.
DNS Round Robin ermöglicht Lastenausgleich und hohe Verfügbarkeit. Die auf
dem geografischen Standort basierende Auflösung ermöglicht eine schnellere Bereitstellung von Inhalten.

Es hängt wirklich davon ab, was Sie erreichen möchten.

verwandte Informationen