ngx_stream_keyval_module
ngx_stream_keyval_module 모듈(1.13.7)은 API에서 관리하는 키-값 쌍에서 가져온 값으로 변수를 생성합니다.
이 모듈은 상업용 구독에서 제공합니다.
예제 구성
http {
server {
...
location /api {
api write=on;
}
}
}
stream {
keyval_zone zone=one:32k state=/var/lib/nginx/state/one.keyval;
keyval $ssl_server_name $name zone=one;
server {
listen 12345 ssl;
proxy_pass $name;
ssl_certificate /usr/local/nginx/conf/cert.pem;
ssl_certificate_key /usr/local/nginx/conf/cert.key;
}
}
Directives
Syntax: keyval key $variable zone=name;
Default: —
Context: stream
새로운 $variable을 생성합니다. 이 값은 키-값 데이터베이스에서 key로 검색합니다. 매칭 규칙은 keyval_zone 명령의 type 매개변수로 정의합니다. 이 데이터베이스는 zone 매개변수에서 지정한 공유 메모리 영역에 저장됩니다.
Syntax: keyval_zone zone=name:size [state=file] [timeout=time] [type=string|ip|prefix] [sync];
Default: —
Context: stream
키-값 데이터베이스를 저장하는 공유 메모리 영역의 name과 size를 설정합니다. 키-값 쌍은 API에서 관리합니다.
state 매개변수 옵션은 키-값 데이터베이스의 현재 상태를 JSON 형식으로 저장하는 file을 지정하고, nginx를 재시작할 때 유지합니다.
예:
keyval_zone zone=one:32k state=/var/lib/nginx/state/one.keyval; # path for Linux
keyval_zone zone=one:32k state=/var/db/nginx/state/one.keyval; # path for FreeBSD
timeout 매개변수 옵션(1.15.0)은 영역에서 키-값 쌍을 제거한 이후의 시점을 설정합니다.
type 매개변수 옵션(1.17.1)은 특정 유형의 키를 매칭하는 데 최적화된 추가적 인덱스를 활성화하고 keyval $variable를 평가할 때 매칭 규칙을 정의합니다.
이 인덱스는 동일한 공유 메모리 영역에 저장되므로 추가적 스토리지가 필요합니다.
type=string
기본값, 인덱스가 활성화되지 않습니다. 레코드 키와 검색 키를 정확히 매칭시켜 변수를 검색합니다.
type=ip
검색 키는 IPv4, IPv6 주소나 CIDR 범위를 텍스트로 표현한 것입니다. 레코드 키를 매칭하기 위해 검색 키는 레코드 키에서 지정한 서브넷에 속하거나 IP 주소를 정확히 매칭해야 합니다.
type=prefix
레코드 키와 검색 키의 접두사를 매칭시켜 변수를 검색합니다(1.17.5). 레코드 키를 매칭하려면 레코드 키가 검색 키의 접두사가 되어야 합니다.
sync 매개변수 옵션(1.15.0)은 공유 메모리 영역을 동기화합니다. 동기화 시 timeout 매개변수를 설정해야 합니다.
동기화를 활성화하면 대상 클러스터 노드에서만 키-값 쌍(한 개 또는 전체)이 제거됩니다. 다른 클러스터 노드의 동일한 키-값 쌍은 timeout 이후에 제거됩니다.