模块 ngx_http_memcached_module

示例配置
指令
     memcached_bind
     memcached_buffer_size
     memcached_connect_timeout
     memcached_gzip_flag
     memcached_next_upstream
     memcached_next_upstream_timeout
     memcached_next_upstream_tries
     memcached_pass
     memcached_read_timeout
     memcached_send_timeout
     memcached_socket_keepalive
嵌入变量

模块 ngx_http_memcached_module 用于从 memcached 服务器获取响应。键在 $memcached_key 变量中设置。响应应该通过外部手段提前放入 memcached 中,而不是 nginx。

示例配置

server {
    location / {
        set            $memcached_key "$uri?$args";
        memcached_pass host:11211;
        error_page     404 502 504 = @fallback;
    }

    location @fallback {
        proxy_pass     http://backend;
    }
}

指令

语法: memcached_bind address [transparent ] | off;
默认:
上下文: http, server, location

此指令首次出现在版本 0.8.22 中。

使与 memcached 服务器的出站连接源自指定的本地 IP 地址,并可选择带端口 (1.11.2)。参数值可以包含变量 (1.3.12)。特殊值 off (1.3.12) 取消了从上一级配置继承的 memcached_bind 指令的效果,从而允许系统自动分配本地 IP 地址和端口。

透明参数 (1.11.0) 允许与 memcached 服务器的出站连接源自非本地 IP 地址,例如,源自客户端的真实 IP 地址:

memcached_bind $remote_addr transparent;

为使此参数生效,通常需要以超级用户权限运行 nginx 工作进程。在 Linux 上 (1.13.8) 不需要,因为如果指定了 transparent 参数,工作进程会从主进程继承 CAP_NET_RAW 能力。还需要配置内核路由表以拦截来自 memcached 服务器的网络流量。

语法: memcached_buffer_size size;
默认:
memcached_buffer_size 4k|8k;
上下文: http, server, location

设置用于读取从 memcached 服务器接收的响应的缓冲区的 size。一旦收到响应,响应就会立即传递给客户端。

语法: memcached_connect_timeout 时间;
默认值:
memcached_connect_timeout 60秒;
上下文: http, server, location

定义与memcached服务器建立连接的超时时间。值得注意的是,此超时通常不能超过75秒。

语法: memcached_gzip_flag 标志;
默认值:
上下文: http, server, location

此指令出现在版本1.3.6中。

启用对memcached服务器响应中标志存在性的测试,并在标志已设置时将“Content-Encoding”响应头字段设置为“gzip”。

语法: memcached_next_upstream error | timeout | invalid_response | not_found | off ...;
默认值:
memcached_next_upstream error timeout;
上下文: http, server, location

指定何时将请求传递到下一个服务器:

error
与服务器建立连接、将请求传递给它或读取响应头时发生错误;
timeout
与服务器建立连接、将请求传递给它或读取响应头时发生超时;
invalid_response
服务器返回空或无效响应;
not_found
服务器上找不到响应;
off
禁用将请求传递给下一个服务器。

必须注意,只有在尚未向客户端发送任何内容时才能将请求传递给下一个服务器。也就是说,如果在传输响应的过程中发生错误或超时,则无法修复。

该指令还定义了何为与服务器通信的失败尝试。即使未在指令中指定,错误、超时和无效响应的情况始终被视为失败尝试。而not_found情况从不被视为失败尝试。

将请求传递给下一个服务器可以受到尝试次数时间的限制。

语法: memcached_next_upstream_timeout 时间;
默认值:
memcached_next_upstream_timeout 0;
上下文: http, server, location

此指令出现在版本1.7.5中。

限制请求被传递到下一个服务器的时间。值为0表示关闭此限制。

语法: memcached_next_upstream_tries number;
默认值:
memcached_next_upstream_tries 0;
上下文: http, server, location

该指令出现在版本1.7.5中。

限制将请求传递给下一个服务器的尝试次数。值为0表示关闭此限制。

语法: memcached_pass address;
默认值:
上下文: location, if in location

设置memcached服务器地址。地址可以指定为域名或IP地址,并且端口:

memcached_pass localhost:11211;

或作为UNIX域套接字路径:

memcached_pass unix:/tmp/memcached.socket;

如果域名解析为多个地址,则所有这些地址将以循环方式使用。此外,可以将地址指定为服务器组

语法: memcached_read_timeout time;
默认值:
memcached_read_timeout 60s;
上下文: http, server, location

定义从memcached服务器读取响应的超时时间。超时仅在两次连续读取操作之间设置,而不是整个响应的传输。如果在此时间内memcached服务器没有传输任何内容,则连接将关闭。

语法: memcached_send_timeout time;
默认值:
memcached_send_timeout 60s;
上下文: http, server, location

设置将请求传输到memcached服务器的超时时间。超时仅在两次连续写操作之间设置,而不是整个请求的传输。如果在此时间内memcached服务器没有接收到任何内容,则连接将关闭。

语法: memcached_socket_keepalive on | off;
默认值:
memcached_socket_keepalive off;
上下文: http, server, location

该指令出现在版本1.15.6中。

配置对传出连接到memcached服务器的“TCP keepalive”行为。默认情况下,套接字使用操作系统的设置。如果将指令设置为“on”,则会为套接字打开SO_KEEPALIVE套接字选项。

嵌入式变量

$memcached_key
定义从memcached服务器获取响应的键。