Module ngx_http_memcached_module
The ngx_http_memcached_module
module allows to obtain responses from a memcached server. The key is set in the $memcached_key
variable. A response should be put in memcached in advance via means that are external to nginx.
Example Configuration
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_buffer_size |
default: | memcached_buffer_size 4k|8k; |
context: | http , server , location |
Sets size
of the buffer used for reading a response received from the memcached server. A response is passed to a client synchronously, immediately as it is received.
syntax: | memcached_connect_timeout |
default: | memcached_connect_timeout 60s; |
context: | http , server , location |
Defines a timeout for establishing a connection with the memcached server. It should be noted that this timeout cannot usually exceed 75 seconds.
syntax: | memcached_gzip_flag |
default: | — |
context: | http , server , location |
This directive appeared in version 1.3.6.
Enables the test for the flag
presence in the memcached server response and sets the request header field “Content-Encoding
” to “gzip
” if the flag is set.
syntax: | memcached_next_upstream |
default: | memcached_next_upstream error timeout; |
context: | http , server , location |
Specifies in which cases a request should be passed to the next server:
error
- an error occurred while establishing a connection with the server, passing it a request, or reading the response header;
timeout
- a timeout has occurred while establishing a connection with the server, passing it a request, or reading the response header;
invalid_response
- a server returned empty or invalid response;
not_found
- a response was not found on the server;
off
- disables passing a request to the next server.
It should be understood that passing a request to the next server is only possible if a client was not sent anything yet. That is, if an error or a timeout occurs in the middle of transferring a response, fixing this is impossible.
syntax: | memcached_pass |
default: | — |
context: | location , if in location |
Sets an address of the memcached server. An address can be specified as a domain name or an address, and a port, for example,
memcached_pass localhost:11211;
If a domain name resolves to several addresses, all of them will be used in a round-robin fashion. In addition, an address can be specified as a server group.
syntax: | memcached_read_timeout |
default: | memcached_read_timeout 60s; |
context: | http , server , location |
Defines a timeout for reading a response from the memcached server. A timeout is only set between two successive read operations, not for the transmission of the whole response. If a memcached server does not transmit anything within this time, a connection is closed.
syntax: | memcached_send_timeout |
default: | memcached_send_timeout 60s; |
context: | http , server , location |
Sets a timeout for transmitting a request to the memcached server. A timeout is only set between two successive write operations, not for the transmission of the whole request. If a memcached server does not receive anything within this time, a connection is closed.