ngx_http_map_module
ngx_http_map_module 모듈은 다른 변수의 값에 따라 값이 달라지는 변수를 생성합니다.
예제 구성
map $http_host $name {
hostnames;
default 0;
example.com 1;
*.example.com 1;
example.org 2;
*.example.org 2;
.example.net 3;
wap.* 4;
}
map $http_user_agent $mobile {
default 0;
"~Opera Mini" 1;
}
Directives
Syntax: map string $variable { ... }
Default: —
Context: http
첫 매개변수에서 지정된 원본 값 하나 이상의 값에 따라, 값이 달라지는 새 값을 생성합니다.
0.9.0버전 이전에는 하나의 변수만 첫 매개변수에서 지정할 수 있었습니다.
변수는 사용할 때만 평가되므로, “map” 변수를 여러 개 선언하는 것만으로는 요청 처리에 비용이 추가되지 않습니다.
map 블록 내부의 매개변수는 원본 값과 결과 값 사이의 매핑을 지정합니다.
원본 값은 문자열 또는 정규식으로 지정됩니다(0.9.6).
문자열은 대소문자를 구분하지 않고 매칭됩니다.
정규식은 대소문자를 구분하는 매칭의 경우 “~” 기호로 시작해야 하고, 대소문자를 구분하지 않는 매칭의 경우 “~*” 기호(1.0.4)로 시작해야 합니다. 정규식에는 이름이 지정된 위치 캡처가 포함되어 있어서, 나중에 결과 변수와 함께 다른 명령에서 사용할 수 있습니다.
원본 값이 아래에 설명된 특수 매개변수의 이름 중 하나와 일치하는 경우, “\”기호를 접두사로 붙여야 합니다.
결과 값에는 텍스트, 변수(0.9.0) 및 그 두 가지의 조합을 포함할 수 있습니다(1.11.0).
다음의 특수 매개변수도 지원됩니다.
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: http
map 변수 해시 테이블에 대한 버킷 용량을 설정합니다. 기본값은 프로세서의 캐시 행 크기에 따라 달라집니다. 해시 테이블을 설정하는 방법에 대한 자세한 내용은 별도의 문서를 참조하세요.
Syntax: map_hash_max_size size;
Default: map_hash_max_size 2048;
Context: http
map 변수 해시 테이블의 최대 size를 설정합니다. 해시 테이블을 설정하는 방법에 대한 자세한 내용은 별도의 문서를 참조하세요.