ngx_http_memcached_module
ngx_http_memcached_module 모듈은 memcached 서버에서 응답을 가져오는 데 사용합니다. 키는 $memcached_key 변수에 설정됩니다. 응답은 미리 nginx 외부에서 미리 memcached 에 넣어야 합니다.
예제 구성
server {
location / {
set $memcached_key "$uri?$args";
memcached_pass host:11211;
error_page 404 502 504 = @fallback;
}
location @fallback {
proxy_pass http://backend;
}
}
Directives
Syntax: memcached_bind address [transparent ] | off;
Default: —
Context: http, server, location
This directive appeared in version 0.8.22.
선택적 포트를 통해 지정된 로컬 IP 주소에서 memcached 서버로 나가는 연결을 설정합니다(1.11.2). 매개변수 값은 변수를 포함할 수 있습니다(1.3.12). 특수 값 off(1.3.12)는 이전 구성 수준에서 상속한 memcached_bind 명령의 효과를 상쇄하여, 시스템에서 로컬 IP 주소와 포트를 자동으로 할당하도록 합니다.
transparent 매개변수(1.11.0)를 사용하면 외부 IP 주소에서 memcached 서버로 나가는 연결을 허용할 수 있습니다. 예를 들어, 클라이언트의 실제 IP 주소를 사용할 수 있습니다.
memcached_bind $remote_addr transparent;
이 매개변수가 작동하려면 일반적으로 superuser 권한이 있는 nginx 작업자 프로세스를 실행해야 합니다. Linux에서는 필수가 아닙니다(1.13.8). transparent 매개변수를 지정한 경우, 작업자 프로세스가 마스터 프로세스에서 CAP_NET_RAW 기능을 상속하기 때문입니다. 또한, 커널 라우팅 테이블을 구성하여 엠캐시트 서버의 네트워크 트래픽을 가로채야 합니다.
Syntax: memcached_buffer_size size;
Default: memcached_buffer_size 4k|8k;
Context: http, server, location
memcached 서버에서 수신된 응답을 읽는 데 사용할 버퍼의 size를 설정합니다. 응답은 수신되는 즉시, 동기식으로 클라이언트에 전달됩니다.
Syntax: memcached_connect_timeout time;
Default: memcached_connect_timeout 60s;
Context: http, server, location
memcached 서버와의 연결을 설정하는 데 적용할 제한 시간을 정의합니다. 참고로 이 제한 시간은 일반적으로 75초를 넘지 않습니다.
Syntax: memcached_force_ranges on | off;
Default: memcached_force_ranges off;
Context: http, server, location
This directive appeared in version 1.7.7.
이 응답의 “Accept-Ranges” 필드와 무관하게, memcached 서버의 캐싱된 응답과 캐싱되지 않은 응답에서 모두 바이트 범위를 지원합니다.
Syntax: memcached_gzip_flag flag;
Default: —
Context: http, server, location
This directive appeared in version 1.3.6.
엠캐시트 서버 응답에 있는 flag에 대한 테스트를 실행하고, 플래그가 설정된 경우 “Content-Encoding” 응답 헤더 필드를 “gzip”으로 설정합니다.
Syntax: memcached_next_upstream error | timeout | invalid_response | not_found | off ...;
Default: memcached_next_upstream error timeout;
Context: http, server, location
요청을 다음 서버로 전달해야 하는 경우를 지정합니다.
error
서버와의 연결을 설정하는 동안 오류가 발생하거나, 요청을 다음 서버로 전달하거나, 응답 헤더를 읽는 경우
timeout
서버와의 연결을 설정하는 동안 오류가 발생하거나, 요청을 다음 서버로 전달하거나, 응답 헤더를 읽는 경우
invalid_response
서버에서 빈 응답 또는 유효하지 않은 응답을 반환한 경우
not_found
서버에서 응답을 찾을 수 없는 경우
off
다음 서버로의 요청 전달이 비활성화됩니다.
단, 아직 클라이언트에 아무것도 전송하지 않은 상태여야 요청을 다음 서버로 전달할 수 있습니다. 즉, 응답을 전송하는 동안 오류가 발생하거나 시간이 초과되면 이를 수정할 수 없습니다.
또한, 이 명령은 서버 연결 시도 실패를 정의합니다. error, timeout, invalid_response는 언제나 통신 연결 실패로 간주됩니다. 이는 명령에서 지정되지 않은 경우에도 해당합니다. not_found는 절대 연결 실패로 간주하지 않습니다.
다음 서버로 요청을 전달하는 것은 시도 횟수와 시간으로 제한할 수 있습니다.
Syntax: memcached_next_upstream_timeout time;
Default: memcached_next_upstream_timeout 0;
Context: http, server, location
This directive appeared in version 1.7.5.
다음 서버로 요청을 전달할 수 있는 시간을 제한합니다 0 값은 이 제한을 비활성화합니다.
Syntax: memcached_next_upstream_tries number;
Default: memcached_next_upstream_tries 0;
Context: http, server, location
This directive appeared in version 1.7.5.
다음 서버로 요청 전달을 시도할 수 있는 횟수를 제한합니다. 0 값은 이 제한을 비활성화합니다.
Syntax: memcached_pass address;
Default: —
Context: location, if in location
memcached 서버 주소를 설정합니다. 이 주소는 도메인 이름이나 IP 주소와 포트로 지정할 수 있습니다.
memcached_pass localhost:11211;
또는, UNIX 도메인 소켓 경로도 가능합니다.
memcached_pass unix:/tmp/memcached.socket;
도메인 이름이 여러 주소로 나뉘는 경우, 순환 방식으로 모든 주소를 사용합니다. 주소는 서버 그룹으로도 지정할 수 있습니다.
Syntax: memcached_read_timeout time;
Default: memcached_read_timeout 60s;
Context: http, server, location
memcached 서버에서 응답을 읽는 시간 제한을 정의합니다. 시간 제한은 전체 응답 전송 시간이 아니라, 두 번의 연속적 읽기 작업 사이를 기준으로 설정합니다. 멤캐시트 서버가 이 시간 내에 아무것도 전송하지 않으면 연결이 닫힙니다.
Syntax: memcached_send_timeout time;
Default: memcached_send_timeout 60s;
Context: http, server, location
memcached 서버에 요청을 전송하기 위한 시간 제한을 설정합니다. 시간 제한은 전체 요청 전송 시간이 아니라, 두 번의 연속적 쓰기 작업 사이를 기준으로 설정합니다. memcached 서버가 이 시간 내에 아무것도 수신하지 않으면 연결이 닫힙니다.
Syntax: memcached_socket_keepalive on | off;
Default: memcached_socket_keepalive off;
Context: http, server, location
This directive appeared in version 1.15.6.
memcached 서버로 나가는 연결에 대한 “TCP keepalive” 동작을 구성합니다. 기본적으로 운영체제의 설정은 소켓에 적용됩니다. 명령에서 “on” 값을 설정하면 해당 소켓에 대해 SO_KEEPALIVE 옵션이 활성화됩니다.
임베디드 변수
$memcached_key
memcached 서버에서 응답을 가져오기 위한 키를 정의합니다.