On this page
Module ngx_http_memcached_module
ngx_http_memcached_module
模块用于从内存缓存服务器获取响应。密钥在$memcached_key
变量中设置。应该通过 nginx 外部的方式预先将响应放入 memcached 中。
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_bind address [transparent ] | off; |
Default: | — |
Context: | http , server , location |
该指令出现在版本 0.8.22 中。
到内存缓存服务器的传出连接源自具有可选端口(1.11.2)的指定本地 IP 地址。参数值可以包含变量(1.3.12)。特殊值off
(1.3.12)取消了从以前的配置级别继承的memcached_bind
指令的效果,这使系统可以自动分配本地 IP 地址和端口。
transparent
参数(1.11.0)允许到内存缓存服务器的传出连接源自 nonlocalIP 地址,例如,源自客户端的真实 IP 地址:
memcached_bind $remote_addr transparent;
为了使此参数起作用,通常必须使用superuser特权运行 nginx worker 进程。在 Linux 上,不需要(1.13.8),就好像指定了transparent
参数一样,辅助进程从主进程继承CAP_NET_RAW
功能。还必须配置内核路由表以拦截来自 memcached 服务器的网络流量。
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 |
定义用于与内存缓存服务器构建连接的超时。请注意,此超时通常不能超过 75 秒。
Syntax: | memcached_force_ranges on | off; |
Default: | memcached_force_ranges off; |
Context: | http , server , location |
该指令出现在版本 1.7.7 中。
启用对 Memcached 服务器的缓存和未缓存响应的字节范围支持,无论这些响应中的“ Accept-Ranges”字段如何。
Syntax: | memcached_gzip_flag flag; |
Default: | — |
Context: | http , server , location |
该指令出现在版本 1.3.6 中。
对 Memcached 服务器响应中的flag
是否存在启用测试,如果设置了该标志,则将“ Content-Encoding
”响应 Headers 字段设置为“ gzip
”。
Syntax: | memcached_next_upstream error | timeout | invalid_response | not_found | off ...; |
Default: | memcached_next_upstream error timeout; |
Context: | http , server , location |
指定在哪种情况下将请求传递到下一个服务器:
error
- 与服务器构建连接,向服务器传递请求或读取响应头时发生错误;
timeout
- 与服务器构建连接,向服务器传递请求或读取响应 Headers 时发生超时;
invalid_response
- 服务器返回了空的或无效的响应;
not_found
- 在服务器上未找到响应;
off
- 禁用将请求传递到下一个服务器。
应该记住的是,只有在还没有任何内容发送给客户端的情况下,才有可能将请求传递给下一台服务器。即,如果在响应的传输过程中发生错误或超时,则无法解决该问题。
该指令还定义了与服务器通信的unsuccessful attempt。 error
,timeout
和invalid_response
的情况始终被认为是失败的尝试,即使未在指令中指定它们也是如此。绝不会将not_found
的情况视为不成功的尝试。
Syntax: | memcached_next_upstream_timeout time; |
Default: | memcached_next_upstream_timeout 0; |
Context: | http , server , location |
该指令出现在版本 1.7.5 中。
限制可以将请求传递到next server的时间。 0
值关闭了此限制。
Syntax: | memcached_next_upstream_tries number; |
Default: | memcached_next_upstream_tries 0; |
Context: | http , server , location |
该指令出现在版本 1.7.5 中。
限制将请求传递到next server的可能尝试次数。 0
值关闭了此限制。
Syntax: | memcached_pass address; |
Default: | — |
Context: | location , if in location |
设置内存缓存服务器地址。该地址可以指定为域名或 IP 地址以及端口:
memcached_pass localhost:11211;
或作为 UNIX 域套接字路径:
memcached_pass unix:/tmp/memcached.socket;
如果一个域名解析为多个地址,则所有这些地址都将以循环方式使用。另外,可以将地址指定为server group。
Syntax: | memcached_read_timeout time; |
Default: | memcached_read_timeout 60s; |
Context: | http , server , location |
定义一个超时,用于从 memcached 服务器读取响应。超时仅在两次连续的读取操作之间设置,而不用于传输整个响应。如果 memcached 服务器在这段时间内未传输任何内容,则连接将关闭。
Syntax: | memcached_send_timeout time; |
Default: | memcached_send_timeout 60s; |
Context: | http , server , location |
设置将请求传输到内存缓存服务器的超时时间。超时仅在两个连续的写操作之间设置,而不用于整个请求的传输。如果 memcached 服务器在这段时间内未收到任何信息,则连接将关闭。
Syntax: | memcached_socket_keepalive on | off; |
Default: | memcached_socket_keepalive off; |
Context: | http , server , location |
该指令出现在 1.15.6 版中。
为与 Memcached 服务器的传出连接配置“ TCP keepalive”行为。默认情况下,os 的设置对套接字有效。如果伪指令设置为值“ on
”,则将为套接字打开SO_KEEPALIVE
套接字选项。
Embedded Variables
$memcached_key
- 定义用于从内存缓存服务器获取响应的密钥。