模块 ngx_http_memcached_module
模块 ngx_http_memcached_module
用于从 memcached 服务器获取响应。键在 $memcached_key
变量中设置。响应应该通过外部手段提前放入 memcached 中,而不是 nginx。
示例配置
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 地址和端口。
透明参数 (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 服务器接收的响应的缓冲区的 size
。一旦收到响应,响应就会立即传递给客户端。
语法: | memcached_connect_timeout |
---|---|
默认值: |
memcached_connect_timeout 60秒; |
上下文: | http , server , location |
定义与memcached服务器建立连接的超时时间。值得注意的是,此超时通常不能超过75秒。
语法: | memcached_gzip_flag |
---|---|
默认值: | — |
上下文: | http , server , location |
此指令出现在版本1.3.6中。
启用对memcached服务器响应中标志存在性的测试,并在标志已设置时将“Content-Encoding”响应头字段设置为“gzip”。
语法: | memcached_next_upstream |
---|---|
默认值: |
memcached_next_upstream error timeout; |
上下文: | http , server , location |
指定何时将请求传递到下一个服务器:
-
error
- 与服务器建立连接、将请求传递给它或读取响应头时发生错误;
-
timeout
- 与服务器建立连接、将请求传递给它或读取响应头时发生超时;
-
invalid_response
- 服务器返回空或无效响应;
-
not_found
- 服务器上找不到响应;
-
off
- 禁用将请求传递给下一个服务器。
必须注意,只有在尚未向客户端发送任何内容时才能将请求传递给下一个服务器。也就是说,如果在传输响应的过程中发生错误或超时,则无法修复。
该指令还定义了何为与服务器通信的失败尝试。即使未在指令中指定,错误、超时和无效响应的情况始终被视为失败尝试。而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 keepalive”行为。默认情况下,套接字使用操作系统的设置。如果将指令设置为“on
”,则会为套接字打开SO_KEEPALIVE
套接字选项。
嵌入式变量
-
$memcached_key
- 定义从memcached服务器获取响应的键。