模块 ngx_http_memcached_module

Example Configuration
Directives
     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
Embedded Variables

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;
    }
}

指令

句法: memcached_bind address [transparent ] | off;
默认:
语境: http, server,location

该指令出现在0.8.22版本中。

从具有可选端口 (1.11.2) 的指定本地 IP 地址发起到 memcached 服务器的传出连接。参数值可以包含变量 (1.3.12)。特殊值(1.3.12)取消了从先前配置级别继承的指令 off的效果,这允许系统自动分配本地IP地址和端口。memcached_bind

参数transparent(1.11.0) 允许来自非本地 IP 地址的到 memcached 服务器的传出连接,例如来自客户端的真实 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

设置size用于读取从 memcached 服务器接收到的响应的缓冲区。收到响应后,将立即将其同步传递给客户端。

句法: memcached_connect_timeout time;
默认:
memcached_connect_timeout 60s;
语境: http, server,location

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

句法: memcached_gzip_flag flag;
默认:
语境: http, server,location

该指令出现在 1.3.6 版本中。

flag启用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
禁用将请求传递到下一个服务器。

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

该指令还定义了什么被视为 与服务器通信的不成功尝试。errortimeout和 的情况invalid_response始终被视为不成功的尝试,即使它们未在指令中指定。的案例not_found 绝不被认为是一次不成功的尝试。

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

句法: memcached_next_upstream_timeout time;
默认:
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 服务器获取响应的密钥。