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)。特殊值 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 size; 默认值:memcached_buffer_size 4k|8k; 上下文:http, server, location
设置用于读取从 memcached 服务器接收的响应的缓冲区大小。一旦接收到响应,就会将其同步传递给客户端。
语 法:memcached_connect_timeout time; 默认值:memcached_connect_timeout 60s; 上下文:http, server, location
定义与 memcached 服务器建立连接的超时时间。应该注意,此超时通常不能超过75秒。
语 法:memcached_force_ranges on | off; 默认值:memcached_force_ranges off; 上下文:http, server, location
该指令出现在 1.7.7 版中。
启用对 memcached 服务器的缓存和未缓存响应的字节范围(byte-range)支持,而不考虑这些响应中的 “Accept-Ranges” 字段。
语 法:memcached_gzip_flag 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 禁止将请求传递到下一个服务器;
应该记住,只有在还没有向客户端发送任何内容的情况下,才能将请求传递给下一台服务器。也就是说,如果在传输响应的过程中出现错误或超时,则无法修复此问题。
该指令还定义了什么被认为是与服务器通信的不成功尝试。error、timeout 和 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 服务器获取响应的键。