ngx_stream_map_module

ngx_stream_map_module 모듈(1.11.2)은 다른 변수의 값에 따라 값이 달라지는 변수를 생성합니다.

예제 구성

map $remote_addr $limit {
    127.0.0.1    "";
    default      $binary_remote_addr;
}

limit_conn_zone $limit zone=addr:10m;
limit_conn addr 1;

Directives

Syntax:  map string $variable { ... }
Default: —
Context: stream

첫 매개변수에서 지정된 원본 값 하나 이상의 값에 따라, 값이 달라지는 새 값을 생성합니다.

변수는 사용할 때만 평가되므로, “map” 변수를 여러 개 선언하는 것만으로는 연결 처리에 비용이 추가되지 않습니다.

map 블록 내부의 매개변수는 원본 값과 결과 값 사이의 매핑을 지정합니다.

원본 값은 문자열이나 정규식으로 지정됩니다.

문자열은 대소문자를 구분하지 않고 매칭됩니다.

정규식은 대소문자를 구분하는 매칭의 경우 “~” 기호로 시작해야 하고, 대소문자를 구분하지 않는 매칭의 경우 “~*” 기호로 시작해야 합니다. 정규식에는 이름이 지정된 위치 캡처가 포함되어 있어서, 나중에 결과 변수와 함께 다른 명령에서 사용할 수 있습니다.

원본 값이 아래에 설명된 특수 매개변수의 이름 중 하나와 일치하는 경우, “\”기호를 접두사로 붙여야 합니다.

이 결과 값에는 텍스트, 변수 및 그 두 가지의 조합을 포함할 수 있습니다.

다음의 특수 매개변수도 지원됩니다.

default value

원본 값이 지정된 버전과 일치하지 않을 경우, 결과 값을 설정합니다. default가 지정되지 않으면 기본 결과 값은 빈 문자열이 됩니다.

hostnames

원본 값이 접두사 또는 접미사 마스크가 있는 호스트이름이 될 수 있습니다.

*.example.com 1;
example.*     1;

다음의 두 레코드는

example.com   1;
*.example.com 1;

결합할 수 있습니다.

.example.com  1;

이 매개변수는 값 목록 전에 지정해야 합니다.

include file

값이 있는 파일을 포함합니다. 여러 가지가 포함될 수 있습니다.

volatile

변수를 캐싱할 수 없습니다(1.11.7).

원본 값이 지정된 버전의 두 개 이상과 일치할 경우(예: 마스크 및 정규식 일치), 다음의 순서에 따라 첫 번째로 일치하는 버전을 선택합니다.

  1. 마스크가 없는 문자열 값
  2. 접두사 마스크가 있는 가장 긴 문자열 값(예: “*.example.com”)
  3. 접미사 마스크가 있는 가장 긴 문자열 값(예: “mail.*”)
  4. 처음으로 일치하는 정규식(구성 파일에 표시되는 순서)
  5. 기본값
Syntax:  map_hash_bucket_size size;
Default: map_hash_bucket_size 32|64|128;
Context: stream

map 변수 해시 테이블에 대한 버킷 용량을 설정합니다. 기본값은 프로세서의 캐시 행 크기에 따라 달라집니다. 해시 테이블을 설정하는 방법에 대한 자세한 내용은 별도의 문서를 참조하세요.

Syntax:  map_hash_max_size size;
Default: map_hash_max_size 2048;
Context: stream

map 변수 해시 테이블의 최대 size를 설정합니다. 해시 테이블을 설정하는 방법에 대한 자세한 내용은 별도의 문서를 참조하세요.

Comments are closed.