模块 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
配置
Directives
示例
memcached_read_timeout memcached_send_timeout
memcached_socket_keepalive
嵌入变量

该模块用于获取 来自 Memcached 服务器的响应。 键在变量中设置。 响应应该通过以下方式提前放入 memcached 中 在 nginx 外部。ngx_http_memcached_module$memcached_key

示例配置

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

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

Directives

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

该Directives出现在版本 0.8.22 中。

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

参数 (1.11.0) 允许 到 Memcached 服务器的传出连接源自 来自非本地 IP 地址, 例如,从客户端的真实 IP 地址:transparent

memcached_bind $remote_addr transparent;

为了使此参数起作用, 通常需要使用超级用户权限运行 nginx 工作进程。 在 Linux 上,它不是必需的 (1.13.8),就像 参数为 Worker processes 从 master 进程继承能力。 还需要配置内核路由表 拦截来自 Memcached 服务器的网络流量。transparentCAP_NET_RAW

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

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

语法: memcached_connect_timeout time;
默认值:
memcached_connect_timeout 60s;
上下文: http, ,serverlocation

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

语法: memcached_gzip_flag flag;
默认值:
上下文: http, ,serverlocation

该Directives出现在版本 1.3.6 中。

启用 memcached 中是否存在的测试 server 响应并将 “” 响应标头字段设置为 “” 如果设置了标志。flagContent-Encodinggzip

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

指定在哪些情况下应将请求传递到下一个服务器:

error
与 server、向其传递请求或读取响应标头;
timeout
与 server、向其传递请求或读取响应标头;
invalid_response
服务器返回空响应或无效响应;
not_found
在服务器上找不到响应;
off
禁止将请求传递到下一个服务器。

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

该Directives还定义了什么被视为不成功 尝试与服务器通信。 的情况 , 和 始终被视为不成功的尝试, 即使它们未在Directives中指定。 这种情况永远不会被视为不成功的尝试。errortimeoutinvalid_responsenot_found

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

语法: memcached_next_upstream_timeout time;
默认值:
memcached_next_upstream_timeout 0;
上下文: http, ,serverlocation

该Directives出现在版本 1.7.5 中。

限制可以将请求传递到下一个服务器的时间。 该值会关闭此限制。0

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

该Directives出现在版本 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, ,serverlocation

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

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

设置向 memcached 服务器发送请求的超时时间。 超时仅在两个连续的写入作 ( 而不是为了传输整个请求。 如果 memcached 服务器在此时间内没有收到任何内容,则 连接已关闭。

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

该Directives出现在版本 1.15.6 中。

配置 “TCP keepalive” 行为 用于 Memcached 服务器的传出连接。 默认情况下,作系统的设置对套接字有效。 如果Directives设置为值 “”,则为套接字打开套接字选项。onSO_KEEPALIVE

嵌入变量

$memcached_key
定义用于从 memcached 服务器获取响应的密钥。