当前位置: 首页 > 工具软件 > ngx-masonry > 使用案例 >

Nginx官方文档(二十五)【ngx_http_memcached_module|ngx_http_mirror_module】

凌经赋
2023-12-01

ngx_http_memcached_module

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 服务器获取响应的密钥

原文档

http://nginx.org/en/docs/http/ngx_http_memcached_module.html


ngx_http_mirror_module

ngx_http_mirror_module 模块(1.13.4)通过创建后台镜像子请求来实现原始请求的镜像。镜像子请求的响应将被忽略。

译者注:利用 mirror 模块,业务可以将线上实时访问流量拷贝至其他环境,基于这些流量可以做版本发布前的预先验证,进行流量放大后的压测等等。

示例配置

location / {
    mirror /mirror;
    proxy_pass http://backend;
}

location /mirror {
    internal;
    proxy_pass http://test_backend$request_uri;
}

指令

mirror

-说明
语法mirror uri | off;
默认mirror off;
上下文http、server、location

设置将做成镜像的原始请求的 URI。可以在同一层级上指定多个镜像(译者注: 多次重复一个镜像可以实现流量放大)。

mirror_request_body

-说明
语法mirror_request_body on | off;
默认mirror_request_body on;
上下文http、server、location

指示是否将客户端请求体做成镜像。启用后,将在创建镜像子请求之前读取客户端请求体。在这种情况下,将禁用由 proxy_request_bufferingfastcgi_request_bufferingscgi_request_bufferinguwsgi_request_buffering 指令设置的未缓冲的客户端请求正代理。

location / {
    mirror /mirror;
    mirror_request_body off;
    proxy_pass http://backend;
}

location /mirror {
    internal;
    proxy_pass http://log_backend;
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";
    proxy_set_header X-Original-URI $request_uri;
}

原文档

http://nginx.org/en/docs/http/ngx_http_mirror_module.html

 类似资料: