Memcached#

该模块用于从 memcached 服务器获取响应。键在 $memcached_key 变量中设置。响应应该通过 Angie 外部的方式预先放入 memcached。

配置示例#

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#

语法

memcached_bind address [transparent] | off;

默认值

上下文

http, server, location

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

transparent 参数允许到 memcached 服务器的出站连接源自非本地 IP 地址,例如来自客户端的真实 IP 地址:

memcached_bind $remote_addr transparent;

为了使此参数生效,通常需要以 超级用户 权限运行 Angie 工作进程。在 Linux 上不需要这样做,因为如果指定了 transparent 参数,工作进程会从主进程继承 CAP_NET_RAW 能力。

备注

需要配置内核路由表以拦截来自 memcached 服务器的网络流量。

memcached_buffer_size#

语法

memcached_buffer_size size;

默认值

memcached_buffer_size 4k|8k;

上下文

http, server, location

设置用于读取从 memcached 服务器接收的响应的第一部分的缓冲区大小。响应在接收后立即同步传递给客户端。

memcached_connect_timeout#

语法

memcached_connect_timeout time;

默认值

memcached_connect_timeout 60s;

上下文

http, server, location

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

memcached_gzip_flag#

语法

memcached_gzip_flag flag;

默认值

上下文

http, server, location

启用对 memcached 服务器响应中标志存在的测试,如果设置了该标志,则将 Content-Encoding 响应头字段设置为 "gzip"。

memcached_next_upstream#

语法

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

禁用将请求传递给下一个服务器。

备注

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

该指令还定义了什么被视为与服务器通信的 失败尝试

errortimeoutinvalid_response

始终被视为失败尝试,即使未在指令中指定

not_found

从不被视为失败尝试

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

memcached_next_upstream_timeout#

语法

memcached_next_upstream_timeout time;

默认值

memcached_next_upstream_timeout 0;

上下文

http, server, location

限制可以将请求传递给 下一个 服务器的时间。

0

关闭此限制

memcached_next_upstream_tries#

语法

memcached_next_upstream_tries number;

默认值

memcached_next_upstream_tries 0;

上下文

http, server, location

限制将请求传递给 下一个 服务器的可能尝试次数。

0

关闭此限制

memcached_pass#

语法

memcached_pass address;

默认值

上下文

location, if in location

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

memcached_pass localhost:11211;

或作为 UNIX 域套接字路径:

memcached_pass unix:/tmp/memcached.socket;

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

memcached_read_timeout#

语法

memcached_read_timeout time;

默认值

memcached_read_timeout 60s;

上下文

http, server, location

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

memcached_send_timeout#

语法

memcached_send_timeout time;

默认值

memcached_send_timeout 60s;

上下文

http, server, location

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

memcached_socket_keepalive#

语法

memcached_socket_keepalive on | off;

默认值

memcached_socket_keepalive off;

上下文

http, server, location

配置到 memcached 服务器的出站连接的 "TCP keepalive" 行为。

off

默认情况下,套接字使用操作系统的设置。

on

为套接字启用 SO_KEEPALIVE 套接字选项。

内置变量#

$memcached_key#

定义用于从 memcached 服务器获取响应的键。