Den ausführlichen Originaltext finden Sie hier: http://blog.sina.com.cn/s/blog_6d579ff40100wk2j.html
Für einen weiteren Artikel, der den Originaltext zusammenfasst, siehe hier: http://blog.csdn.net/yankai0219/article/details/8070790
Variableninterpolation:
Alle Nginx-Variablen müssen in der Nginx-Konfigurationsdatei mit $ Präfix, verwenden Sie das $-Symbol + Variablenname, um eine neue Variable zu erstellen. Zum Beispiel:
Standorttest{
$a hello setzen;
set $b "$a ,world";
echo "b: $b";
}
Zugriff: curl http://localhost/test/Ausgabe: b: Hallo WeltErklärung: Der obige Satz ist die Anweisung von HttpRewriteModule und echo ist die HttpEchoModule-Direktive. Es ist ersichtlich, dass beide Module die variable Interpolation unterstützen. Aber nicht alle Module unterstützen die Variableninterpolation. Ob der Befehlsparameter > zulässt, hängt tatsächlich vom Implementierungsmodul der Direktive ab. Variable Hinweise zur Verwendung: Wenn der Variable direkt andere Zeichenfolgen folgen, müssen Sie
{}Schließen Sie den Variablennamen ein, andernfalls werden der Variablenname und die folgende Zeichenfolge zu einem Variablennamen verkettetZum Beispiel:
location /test { set $variable "hello";
echo "${variable}world" ;
}
Variablen müssen zuerst erstellt und dann verwendet werden, sonst wird ein Fehler gemeldet Zum Beispiel:
server {
listen 80;
Standort/Test
{
echo $foo;}
}
Zugriff: curl
http://localhost/test/Fehlerbericht:
[emerg] unbekannte „foo“-VariableErklärung: nginxnginxDie Erstellungs- und Zuweisungsvorgänge von Variablen treten zu völlig unterschiedlichen Zeitpunkten auf. Die Erstellung von Nginx-Variablen kann nur erfolgen, wenn die Nginx-Konfiguration geladen ist oder Nginx Beim Start erfolgt der Zuweisungsvorgang erst, wenn die Anfrage tatsächlich verarbeitet wird. Dies bedeutet, dass die direkte Verwendung von Variablen, ohne sie zu erstellen, zu Startfehlern führt, und es bedeutet auch, dass wir während der Anforderungsverarbeitung 🎜> keine neuen NginxVariablenVariablensichtbarkeit: Nginx
Sobald eine Variable erstellt wurde, ist der sichtbare Bereich ihres Variablennamens der gesamte Die Nginx-Konfiguration kann sogar Server
-Konfigurationsblöcke über verschiedene virtuelle Hosts hinweg umfassen. Zum Beispiel: server { listen 80;location /foo {
echo "foo =[$foo]";
}
location /bar {
set $foo 32;
echo "foo =[$foo]";
}
}
Erklärung: Hier erstellen wir die Variable
mit dem Befehl set
in location /bar
$foo, damit diese Variable in der gesamten Konfigurationsdatei sichtbar ist, sodass wir direkt auf diese Variable im Speicherort /foo verweisen können. Nicht Sorge Nginx wird einen Fehler melden. Das Ergebnis des Zugriffs auf diese beiden Schnittstellen:
$ curl 'http://localhost/foo' foo = [] $ curl 'http://localhost/bar' foo = [32] $ curl 'http://localhost/foo' foo = []
Eine weitere Variablenfunktion ergibt sich aus diesem Beispiel:
Nginx Obwohl der sichtbare Bereich des Variablennamens die gesamte Konfiguration ist, verfügt jede Anfrage über unabhängige Kopien bzw. unabhängige Kopien Die Container, die jede Variable zum Speichern von Werten verwendet, stören sich nicht gegenseitig. Nachdem wir beispielsweise die Schnittstelle /bar angefordert hatten, wurde der Variablen $foo der Wert 32, aber es hat keinen Einfluss auf das $foo, das nachfolgenden Anfragen an das /foo entspricht Schnittstelle. -Wert (er ist noch leer!), da jede Anfrage eine eigene unabhängige Kopie der $foo-Variable für hat Nginx Einer der häufigsten Fehler von Neulingen besteht darin, die Nginx-Variable als etwas zu verstehen, das global zwischen Anfragen geteilt wird, oder dass „Globale Variablen “ . Tatsächlich NginxDie Lebensdauer einer Variablen kann die Anforderungsgrenze nicht überschreiten
Eingebaute Variable
Gemeinsame integrierte Variablen: $uri:location /test {
echo "uri = $uri";
echo "request_uri =$request_uri";
}
Anfrage und Antwort:
$ curl 'http://localhost:8080/test'
uri = /test
request_uri = /test
$ curl 'http://localhost:8080 / test?a=3&b=4'
uri = /test
request_uri = /test?a=3&b=4
$ curl 'http://localhost:8080/test/hello world?a=3&b=4'
uri = /test/hello world
request_uri = /test/hello world?a=3&b=4
$arg_xxx
Variablengruppe: Wird verwendet, um den Wert des URI-Parameters mit dem Namen xxx im aktuellen zu erhalten Anfrage
Standort/Test {
echo "name:$arg_name";
echo "class:$arg_class";
}
Anfrage und Antwort:
$ curl 'http://localhost:8080/test'
Name:
Klasse:
$ curl 'http://localhost:8080/test?name=Tom&class=3'
Name: Tom
Klasse: 3
$ curl 'http://localhost:8080/test?name=hello world&class=9'
Name: Hallo Welt
Klasse: 9
Tatsächlich kann
$arg_name nicht nur mit name Parameter können auch mit NAME Parametern oder Name usw. übereinstimmen, Nginxpasst die Parameternamen in der ursprünglichen Anfrage automatisch vollständig in Kleinbuchstaben an, bevor sie abgeglichen werden:
Name: Marry
Klasse:
$ curl 'http://localhost:8080/test?Name=Jimmy'
Name: Jimmy
Klasse:
$cookie_xxx Variablengruppe: Wird verwendet, um den Cookie-Wert
$http_xxxVariablengruppe: Wird verwendet, um den Wert des Anforderungsheaders abzurufen$send_http_xxx
Variablengruppe: Wird verwendet, um den Wert des Antwortheaders abzurufen$args:
Gibt die Parameterzeichenfolge URL der aktuellen Anfrage zurück (d. h. den Teil nach dem Fragezeichen in der Anfrage URL)
Das Obige hat Nginx-Variablen eingeführt, einschließlich ihrer Aspekte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.