Nginx-Variablen

WBOY
Freigeben: 2016-08-08 09:26:50
Original
1148 Leute haben es durchsucht

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“-Variable

Erklä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:
Wird verwendet, um den URI (Dekodiert und enthält keine Anforderungsparameter) $request_uri:
wird verwendet, um den ursprünglichen
URI von zu erhalten Anfrage (nicht entschlüsselt und mit Anfrageparametern)

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:

$ curl 'http: //localhost:8080/test?NAME=Marry'

Name: Marry

Klasse:

$ curl 'http://localhost:8080/test?Name=Jimmy'

Name: Jimmy

Klasse:

$cookie_xxx Variablengruppe: Wird verwendet, um den Cookie-Wert
$http_xxx
Variablengruppe: 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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage