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).
원본 값이 지정된 버전의 두 개 이상과 일치할 경우(예: 마스크 및 정규식 일치), 다음의 순서에 따라 첫 번째로 일치하는 버전을 선택합니다.
- 마스크가 없는 문자열 값
- 접두사 마스크가 있는 가장 긴 문자열 값(예: “*.example.com”)
- 접미사 마스크가 있는 가장 긴 문자열 값(예: “mail.*”)
- 처음으로 일치하는 정규식(구성 파일에 표시되는 순서)
- 기본값
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를 설정합니다.