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 |
---|---|
默认值 | — |
上下文 |
http 、server 、location |
此指令出现在 0.8.22 版本中。
使到 memcached 服务器的传出连接源自指定的本地 IP 地址,并带有可选端口 (1.11.2)。参数值可以包含变量 (1.3.12)。特殊值 off
(1.3.12) 会取消从先前配置级别继承的 memcached_bind
指令的效果,从而允许系统自动分配本地 IP 地址和端口。
transparent
参数 (1.11.0) 允许到 memcached 服务器的传出连接源自非本地 IP 地址,例如,源自客户端的真实 IP 地址
memcached_bind $remote_addr transparent;
为了使此参数起作用,通常需要使用 超级用户 权限运行 nginx 工作进程。在 Linux 上不需要这样做 (1.13.8),因为如果指定了 transparent
参数,工作进程会从主进程继承 CAP_NET_RAW
功能。还需要配置内核路由表以拦截来自 memcached 服务器的网络流量。
语法 |
memcached_buffer_size |
---|---|
默认值 |
memcached_buffer_size 4k|8k; |
上下文 |
http 、server 、location |
设置用于读取从 memcached 服务器接收的响应的缓冲区的 大小
。响应在收到后会立即同步传递给客户端。
语法 |
memcached_connect_timeout |
---|---|
默认值 |
memcached_connect_timeout 60s; |
上下文 |
http 、server 、location |
定义与 memcached 服务器建立连接的超时时间。应注意,此超时时间通常不能超过 75 秒。
语法 |
memcached_gzip_flag |
---|---|
默认值 | — |
上下文 |
http 、server 、location |
此指令出现在 1.3.6 版本中。
启用对 memcached 服务器响应中flag
存在的测试,如果设置了该标志,则将“Content-Encoding
”响应头字段设置为“gzip
”。
语法 |
memcached_next_upstream |
---|---|
默认值 |
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 0; |
上下文 |
http 、server 、location |
此指令出现在 1.7.5 版本中。
限制在该时间段内可以将请求传递到下一台服务器。0
值关闭此限制。
语法 |
memcached_next_upstream_tries |
---|---|
默认值 |
memcached_next_upstream_tries 0; |
上下文 |
http 、server 、location |
此指令出现在 1.7.5 版本中。
限制将请求传递到下一台服务器的可能尝试次数。0
值关闭此限制。
语法 |
memcached_pass |
---|---|
默认值 | — |
上下文 |
location 、if in location |
设置 memcached 服务器地址。地址可以指定为域名或 IP 地址,以及端口
memcached_pass localhost:11211;
或作为 UNIX 域套接字路径
memcached_pass unix:/tmp/memcached.socket;
如果一个域名解析为多个地址,则所有这些地址都将以循环方式使用。此外,一个地址可以指定为 服务器组。
语法 |
memcached_read_timeout |
---|---|
默认值 |
memcached_read_timeout 60s; |
上下文 |
http 、server 、location |
定义从 memcached 服务器读取响应的超时时间。超时时间仅在两次连续的读取操作之间设置,而不是针对整个响应的传输。如果 memcached 服务器在此时间内未传输任何内容,则连接将关闭。
语法 |
memcached_send_timeout |
---|---|
默认值 |
memcached_send_timeout 60s; |
上下文 |
http 、server 、location |
设置向 memcached 服务器传输请求的超时时间。超时时间仅在两次连续的写入操作之间设置,而不是针对整个请求的传输。如果 memcached 服务器在此时间内未收到任何内容,则连接将关闭。
语法 |
memcached_socket_keepalive |
---|---|
默认值 |
memcached_socket_keepalive off; |
上下文 |
http 、server 、location |
此指令出现在 1.15.6 版本中。
配置到 memcached 服务器的传出连接的“TCP 保活”行为。默认情况下,操作系统的设置对套接字有效。如果指令设置为值“on
”,则为套接字启用 SO_KEEPALIVE
套接字选项。
嵌入式变量
$memcached_key
- 定义用于从 memcached 服务器获取响应的键。