nginx 변수

WBOY
WBOY원래의
2016-08-08 09:26:501165검색

자세한 원문 보기: http://blog.sina.com.cn/s/blog_6d579ff40100wk2j.html

원문을 요약한 다른 기사를 보려면, 여기를 참조하세요: http://blog.csdn.net/yankai0219/article/details/8070790

가변 보간:

모든 Nginx 변수는 Nginx 구성 파일에서 $ 접두사, $ 기호 + 변수 이름을 사용하여 새 변수를 구성하는 방법을 변수 보간이라고 합니다. 예:

위치 테스트{

set $a hello;

set $b "$a ,world";

echo "b: $b";

}

액세스: curl http://localhost/test/출력: b: hello world설명: 위의 setHttpRewriteModule의 명령이고, echoHttpEchoModule 지시어입니다. 두 모듈 모두 변수 보간을 지원하는 것을 볼 수 있습니다. 그러나 모든 모듈이 변수 보간을 지원하는 것은 아닙니다. 실제로 명령어 매개변수가 >를 허용하는지 여부는 지시문의 구현 모듈에 따라 다릅니다. 변수 사용법 참고 사항: 변수 바로 뒤에 다른 문자열이 올 경우

{}

변수 이름을 묶습니다. 그렇지 않으면 변수 이름과 다음 문자열이 하나의 변수 이름으로 연결됩니다.예:

위치 /테스트 { set $variable "hello";

echo "${variable}world" ;

}

변수를 먼저 생성한 후 사용해야 합니다. 그렇지 않으면 오류가 보고됩니다. 예:

서버 {

듣기 80;

위치/테스트

{

echo $foo;

}

}

액세스: curl

http://localhost/test/오류 보고:

[emerg] 알 수 없는 "foo" 변수

설명: nginxnginx변수 생성 및 할당 작업 완전히 다른 시간 단계에서 발생합니다. Nginx 변수 생성은 Nginx 구성이 로드되거나 Nginx 시작되면 할당 작업은 요청이 실제로 처리될 때만 발생합니다. 즉, 변수를 생성하지 않고 직접 사용하면 시작 오류가 발생하며 요청 처리 중에 새로운 Nginx변수 변수 가시성: Nginx

변수가 생성되면 해당 변수 이름의 가시 범위는 전체입니다.

Nginx

구성, 다양한 가상 호스트의 서버

구성 블록 전체에서도 가능합니다. 예: 서버 { Listen 80;

위치 /foo {

echo "foo =[$foo]";

}

위치 /bar {

set $foo 32;

echo "foo =[$foo]";

}

}

설명: 여기서는

위치 /bar

set 명령을 사용하여

변수를 생성했습니다. > $foo

, 이 변수는 전체 구성 파일에 표시되므로 위치 /foo에서 이 변수를 직접 참조할 수 있습니다. 걱정하세요 Nginx에서 오류를 보고합니다. 이 두 인터페이스에 액세스한 결과:

$ 컬 'http://localhost/foo'

foo = []

$ 컬 'http://localhost/bar'

foo = [32]

$ 컬 'http://localhost/foo'

foo = []

이 예에서는 또 다른 변수 기능이 제공됩니다.
Nginx
변수 이름의 표시 범위는 전체 구성이지만 각 요청에는 독립적인 복사본 또는 독립적인 복사본이 있습니다. 각 변수가 값을 저장하는 데 사용하는 컨테이너는 서로 간섭하지 않습니다. 예를 들어 /bar 인터페이스를 요청한 후 $foo 변수에 32, 그러나 /foo에 대한 후속 요청에 해당하는 $foo에는 영향을 미치지 않습니다. 인터페이스 값(아직 비어 있습니다!) 각 요청에는 에 대한 $foo 변수 의 독립적인 복사본이 있기 때문입니다. Nginx 초보들이 가장 흔하게 저지르는 실수 중 하나는 Nginx 변수를 요청 간에 전역적으로 공유되는 변수, 즉 "전역 변수 " . 실제로 Nginx변수의 수명은 요청 경계를 넘을 수 없습니다

내장 변수

공통 내장 변수: $uri:
현재의 URI (디코딩되었으며 요청 매개변수를 포함하지 않음) $request_uri:
는 원본
URI를 얻는 데 사용됩니다. request(디코딩되지 않고 요청 매개변수 포함)

location /test {

echo "uri = $uri";

echo "request_uri =$request_uri";

}

요청 및 응답:


$ 컬 'http://localhost:8080/test'

uri = /test

request_uri = /test

$ 컬 'http://localhost:8080 / test?a=3&b=4'

uri = /test

request_uri = /test?a=3&b=4

$ 컬 'http://localhost:8080/test/hello%20world?a=3&b=4'

uri = /test/hello world

request_uri = /test/hello%20world?a=3&b=4

$arg_xxx

변수 그룹: 현재 요청에서 xxx라는 URI 매개변수를 가져오는 데 사용됩니다.

location /test 값 {

echo "name:$arg_name";

echo "class:$arg_class";

}

요청 및 응답:


$ 컬 'http://localhost:8080/test'

이름:

클래스:

$ 컬 'http://localhost:8080/test?name=Tom&class= 3'

이름: 톰

클래스: 3

$ 컬 'http://localhost:8080/test?name=hello%20world&class=9'

이름: hello%20world

class: 9

사실

$arg_name name 매개변수는 NAME 매개변수 또는 Name 등과 일치할 수도 있습니다. Nginx 는 원래 요청의 매개변수 이름을 일치시키기 전에 자동으로 모두 소문자로 조정합니다.

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

이름: 결혼

클래스:

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

name : 지미

수업:

$cookie_xxx 변수 그룹: 쿠키
$http_xxx
변수 그룹: 요청 헤더 값을 가져오기 위해 사용$send_http_xxx
변수 그룹: 응답 헤더 값을 가져오기 위해 사용$args:
현재 요청의 URL 매개변수 문자열을 반환합니다(예: 요청 URL) 위에서는 nginx 변수를 소개했으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.