ngx_http_memcached_module 模块

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 指令

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

该指令出现在 0.8.22 版本中。

使用可选端口 (1.11.2) 从指定的本地IP地址建立到 memcached 服务器的连接。参数值可以包含变量(1.3.12)。特殊值 off (1.3.12) 取消了从上一个配置级别继承的 memcached_bind 指令的配置,该指令允许系统自动分配本地IP地址和端口。

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

memcached_bind $remote_addr transparent;

为了使该参数起作用,通常需要以超级用户权限运行 nginx 工作进程。在 Linux 上不需要(1.13.8),就像指定了 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_force_ranges 指令

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

该指令出现在 1.7.7 版中。

启用对 memcached 服务器的缓存和未缓存响应的字节范围(byte-range)支持,而不考虑这些响应中的 “Accept-Ranges” 字段。

memcached_gzip_flag 指令

语 法:memcached_gzip_flag flag;
默认值:—
上下文:http, server, location

该指令出现在 1.3.6 版中。

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

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

该指令还定义了什么被认为是与服务器通信的不成功尝试。error、timeout 和 invalid_response 的情况始终被认为是不成功的尝试,即使指令中没有指定它们。not_found 的情况永远不会被认为是不成功的尝试。

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

memcached_next_upstream_timeout 指令

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

该指令出现在 1.7.5 版中。

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

memcached_next_upstream_tries 指令

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

该指令出现在 1.7.5 版中。

限制将请求传递到下一个服务器的可能尝试次数。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

该指令出现在 1.15.6 版中。

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

内嵌变量

$memcached_key

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

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号