nginx 변수 학습 초보 - 장 이 춘 블 로 그 를 읽 고 필 기 를 합 니 다.

6716 단어 기초 학습
학습 노트
다음은 agentzh (장 이 춘) 의 nginx 튜 토리 얼 및 구 글 선생님 을 참고 합 니 다.
set
location /hi{
    set $a "hi";
    return 200  "hello";
}
  • 여기 set $a 는 변 수 를 만 들 고 할당 값 은 hi 입 니 다. 주의해 야 할 것 은 Nignx 가 시 작 될 때 변 수 는 만 들 어 졌 지만 구체 적 으로 실 행 된 후에 변 수 는 할당 되 었 습 니 다. 즉, 생 성과 할당 은 분 리 된 것 입 니 다.
  • nignx 변수 이름 의 보 이 는 범 위 는 전체 설정 이지 만 서로 다른 요청 은 서로 격 리 되 어 있 습 니 다. 변수의 성명 주 기 는 요청 과 관련 되 고 location 과 무관 합 니 다.(여기 서 언어 로 연 상 될 수 있 습 니 다. 전역 변 수 는 각 함수 체 에서 인 용 될 수 있 지만 두 번 분리 해서 실행 하면 서로 격 리 됩 니 다)
  • 내장 변수

    nginx 는 내 장 된 변수 군 이 많 습 니 다. $arg_xxx 에서 xxx 라 는 요청 파 라 메 터 를 얻 을 수 있 고 모든 get 의 파 라 메 터 를 소문 자로 자동 으로 바 꾼 후에 일치 할 수 있 습 니 다.
    location /hi{
       add_header oriuri $uri;
        add_header requri $request_uri;
        add_header post $arg_post;
        return 301 "www.baidu.com";
        }
    curl hongjian.cn/hi?post=helloworld -v
    < HTTP/1.1 301 Moved Permanently
    < Server: nginx
    < Date: Sun, 23 Apr 2017 10:10:12 GMT
    < Content-Type: text/html
    < Content-Length: 178
    < Connection: keep-alive
    < Location: www.baidu.com
    < oriuri: /hi
    < requri: /hi?post=helloworld
    < post: helloworld
    

    argXXX 와 같은 내장 변수 가 적지 않 습 니 다. 예 를 들 어 쿠키 값 을 가 져 오 는 cookieXXX 변수 군, 요청 헤드 를 가 져 오 는 httpXXX 변수 군, 응답 헤드 를 가 져 오 는 senthttp_XXX 변수 군.여기 일일이 소개 하지 않 겠 습 니 다. 관심 이 있 으 시 면 ngx 를 참고 하 세 요.http_코어 모듈 의 공식 문서 입 니 다.
    대부분의 내장 변 수 는 읽 을 수 있 는 것 일 뿐 할당 을 하면 nginx 타 임 스 를 시작 하 는 중 오류 가 발생 합 니 다.
    취 처리 및 저장 처리

    모든 Nginx 변수 가 저 장 된 용 기 를 가지 고 있 는 것 은 아 닙 니 다. 의 변 수 는 Nginx 핵심 에서 '색인 되 는' (indexed) 이 라 고 불 린 다.반대로 '색인 되 지 않 은' (non - indexed) 이 라 고 불 린 다.$arg_xxx 색인 되 지 않 은 변수 입 니 다.
    유사 한 $arg_xxx 내 변수 군 을 읽 을 때 nginx 는 해당 하 는 읽 기 처리 프로그램 을 실행 하여 URL 의 매개 변수 문자열 을 검색 하여 이 변수의 값 을 가 져 옵 니 다. $cookie_xxx 도 마찬가지 입 니 다.
    nginx 값 용기 캐 시
    http{
        map $arg_method $ret {
            GET 1;
            POST 2;
            PUT 3;
            DELETE 4;
            default 5;
        }
        server {
            location /hi {
            #set $arg_method get;
            return 200 "ret:$ret";
        }
    }

    여기 서 우 리 는 nginx 의 맵 맵 맵 규칙 을 사용 했다.이 맵 은 http 모듈 에서 만 마 운 트 해제 할 수 있 기 때문에 전역 적 입 니 다.여기 서 요청 상황 을 살 펴 보도 록 하 겠 습 니 다.
    curl hongjian.cn/hi\?method=post
    ret:2
    
    curl hongjian.cn/hi\?method=POST
    ret:2

    요청 매개 변수 중의 method 는 map 의 규칙 에 따라 대응 값 으로 매 핑 되 고 nginx 는 매개 변 수 를 소문 자로 바 꾸 어 비교 하 는 것 을 볼 수 있 습 니 다.
    위의 set 문 구 는 주석 이 풀 렸 음 을 알 수 있 습 니 다. 주석 을 열 고 다시 방문 하 겠 습 니 다.
    curl hongjian.cn/hi\?method=POST
    ret:1

    반환 값 이 1 이 되면 여기 서 하나의 사실 을 입증 하고 수치 (ret) 를 취 할 때 만 계산 할 수 있 습 니 다. 여기 서 우 리 는 이런 현상 을 이 라 고 부 릅 니 다.캐 시 와 무슨 관계 가 있 는 지 아직 보이 지 않 습 니 다. 작은 조정 을 하 겠 습 니 다.
    http{
        map $arg_method $ret {
            GET 1;
            POST 2;
            PUT 3;
            DELETE 4;
            default 5;
        }
        server {
            location /hi {
            set $ret1 $ret;
            set $arg_method default;
            set $ret2 $ret;
            return 200 "ret1:$ret, ret2:$ret2";
        }
    }

    방문 하여 요청 결 과 를 보십시오.
    curl hongjian.cn/hi\?method=post
    ret1:2, ret2:2
    ret2 저희 가 method 변 수 를 default 로 설정 해서 변 하지 않 았 습 니 다. 왜 일 까요?원래 nginx 는 생 성 된 변 수 를 위해 값 용 기 를 캐 시 로 선택 할 수 있 습 니 다. ngxmap 라 는 구 조 는 계산 비용 이 많이 드 는 것 으로 인정 되 어 캐 시 를 진행 합 니 다. 타성 계산 으로 인해 ret 에 대한 추출 프로그램 을 처음 실행 할 때 만 ret 의 map 결 과 를 계산 하고 이 값 을 캐 시 로 사용 합 니 다. 그 후에 우 리 는 method 의 값 을 수정 하 더 라 도 다음 문 구 는 추출 프로그램 을 실행 할 때 지난번 캐 시 결 과 를 되 돌려 줍 니 다.
    따라서 이러한 전역 적 인 맵 구 조 는 요청 한 첫 번 째 추출 프로그램 이 실 행 될 때 만 한 번 계산 되 고 나중에 추출 프로그램 을 실행 할 때 캐 시 결 과 를 사용 합 니 다.
    능 동적 계산 도 흔 하 다.
    예 를 들 어 set 할당 작업 은 즉시 계산 하고 결 과 를 변수 에 할당 합 니 다.
    부자 의 요청 에 대하 여

    여기 서 말 하 는 하위 요청 은 진정한 의미 의 하위 HTTP 요청 이 아니 라 제3자 모듈, 예 를 들 어 ngxlocation 에서 시 작 된 C 언어의 호출 일 뿐 부자 요청 간 에 변수 에 대한 공유 도 있 고 공유 되 지 않 은 것 도 있 으 며 만 나 서 구체 적 인 조회 와 분석 을 한다.

    좋은 웹페이지 즐겨찾기