Unterschied zwischen „location /“ und Nginx-Standardserverblockwerten

Unterschied zwischen „location /“ und Nginx-Standardserverblockwerten

Was ist der Sinn der Definition location / { }, da dies, wenn ich es richtig verstehe, mit allen potenziellen URIs übereinstimmt und jeder Kampf gegen einen Standort mit einer spezifischeren URI „verliert“ wird? Meine Begründung ist, dass Sie einfach alle Standardwerte direkt in den Serverblock einfügen können, anstatt ein zu definieren location / { }.

Wenn ich also richtig liege, hat dies keinen Zweck:

server {
   root /www/html;
   location / {
      root /www/html;
   }

}

PS: Ich bin ziemlich neu bei Nginx, also sagen Sie mir ruhig, ob ich es besser formulieren könnte, um die Frage nützlicher/leichter zu finden.

Antwort1

Sie haben Recht, Ihr konkretes Beispiel erfüllt keinen Zweck. Aber es gibt viele Nginx-Direktiven, die auf Serverebene nicht funktionieren

Zum Beispiel:

server {
    proxy_pass http://localhost:8080;
}

^ das funktioniert nicht.
v das funktioniert.

server {
    location / {
        proxy_pass http://localhost:8080;
    }
}

Anweisungen auf Serverebene sind Standardwerte. Es gibt Anweisungen, die nur auf Serverebene funktionieren, und es gibt Anweisungen, die nur auf Standortebene funktionieren.

Das sind zwei grundverschiedene Dinge. Ihr Beispiel hat nur die gleichen Konsequenzen.

verwandte Informationen