返回介绍

介绍

其他

How-To

开发

模块参考

ngx_http_memcached_module

发布于 2024-08-13 23:46:27 字数 16545 浏览 0 评论 0 收藏 0

ngx_http_memcached_module 模块用于从 memcached 服务器上获取响应。key 设置在 $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 版本中出现

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

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

memcached_bind $remote_addr transparent;

为了使这个参数起作用,通常需要以超级用户权限运行 nginx worker 进程。在 Linux 上,不需要指定 transparent 参数,工作进程会继承 master 进程的 CAP_NET_RAW 功能。此外,还要配置内核路由表来拦截来自 memcached 服务器的网络流量。

memcached_buffer_size

-说明
语法memcached_buffer_size size;
默认memcached_buffer_size 4k|8k
上下文http、server、location

设置用于读取从 memcached 服务器收到的响应的缓冲区的大小(size)。一旦收到响应,响应便会同步传送给客户端。

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 版本中出现

无论响应中的 Accept-Ranges 字段如何,都对来自 memcached 服务器的缓存和未缓存的响应启用 byte-range 支持。

memcached_gzip_flag

-说明
语法memcached_gzip_flag flag;
默认——
上下文http、server、location
提示该指令在 1.3.6 版本中出现

启用对 memcached 服务器响应中的 flag 存在测试,并在 flag 设置时将 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

    禁用将请求传递给下一个服务器。

我们应该记住,只有在没有任何内容发送给客户端的情况下,才能将请求传递给下一个服务器。也就是说,如果在响应传输过程中发生错误或超时,修复这样的错误是不可能的。

该指令还定义了与服务器进行通信的失败尝试errortimeoutinvalid_response 的情况始终被视为失败尝试,即使它们没有在指令中指定。not_found 的情况永远不会被视为失败尝试。

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

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;
默认——
上下文http、location 中 if

设置 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 定义从 gRPC 服务器读取响应的超时时间。超时间隔只在两次连续的读操作之间,而不是整个响应的传输过程。如果 memcached 服务器在此时间内没有发送任何内容,则连接关闭。

memcached_send_timeout

-说明
语法memcached_send_timeout time;
默认memcached_send_timeout 60s;
上下文http、server、location

设置将请求传输到 memcached 服务器的超时时间。超时间隔只在两次连续写入操作之间,而不是整个请求的传输过程。如果 memcached 服务器在此时间内没有收到任何内容,则连接将关闭。

内嵌变量

  • $memcached_key

    定义从 memcached 服务器获取响应的密钥

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文