模块 ngx_mgmt_module

示例配置
指令
     connect_timeout
     mgmt
     read_timeout
     resolver
     resolver_timeout
     send_timeout
     ssl
     ssl_certificate
     ssl_certificate_key
     ssl_ciphers
     ssl_crl
     ssl_name
     ssl_password_file
     ssl_protocols
     ssl_server_name
     ssl_trusted_certificate
     ssl_verify
     ssl_verify_depth
     usage_report
     uuid_file

ngx_mgmt_module 模块允许向 NGINX Management Suite 实例管理器 (1.25.3) 报告当前 nginx 安装。默认情况下,nginx 每 30 分钟使用 SSL 连接向位于 nginx-mgmt.local 的实例管理器发送使用情况信息。除非配置了 自定义解析器,否则使用系统解析器,并且仅在 加载 配置时调用一次。

此模块作为我们 商业订阅 的一部分提供。

示例配置

mgmt {
    usage_report endpoint=nginx-mgmt.local interval=30m;
    resolver     DNS_IP;

    uuid_file /var/lib/nginx/nginx.id;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers   DEFAULT;

    ssl_certificate     client_cert.pem;
    ssl_certificate_key client_cert.key;

    # configure server certificate verification
    # to validate the authenticity of NMS
    ssl_trusted_certificate  trusted_ca_cert.crt;
    ssl_verify               on;
    ssl_verify_depth         2;
}

指令

语法 connect_timeout time;
默认值
connect_timeout 15s;
上下文 mgmt

定义与实例管理器建立连接的超时时间。

语法 mgmt { ... }
默认值
上下文 main

提供指定管理服务器指令的配置文件上下文。

语法 read_timeout time;
默认值
read_timeout 60s;
上下文 mgmt

定义从实例管理器读取响应的超时时间。超时时间仅在两次连续读取操作之间设置,而不是针对整个响应的传输设置。如果实例管理器在此时间内没有任何传输,则连接将关闭。

语法 resolver address ... [valid=time] [ipv4=on|off] [ipv6=on|off] [status_zone=zone];
默认值
上下文 mgmt

配置用于将实例管理器名称解析为地址的名称服务器,例如

resolver 127.0.0.1 [::1]:5353;

地址可以指定为域名或 IP 地址,并带有可选端口。如果未指定端口,则使用端口 53。名称服务器以循环方式进行查询。

默认情况下,nginx 在解析时将同时查找 IPv4 和 IPv6 地址。如果不需要查找 IPv4 或 IPv6 地址,则可以指定 ipv4=offipv6=off 参数。

默认情况下,nginx 使用响应的 TTL 值缓存答案。可选的 valid 参数允许覆盖它

resolver 127.0.0.1 [::1]:5353 valid=30s;

为防止 DNS 欺骗,建议在安全可靠的本地受信任网络中配置 DNS 服务器。

可选的 status_zone 参数启用在指定的 zone收集 DNS 服务器请求和响应的统计信息。

语法 resolver_timeout time;
默认值
resolver_timeout 30s;
上下文 mgmt

设置名称解析超时时间。

语法 send_timeout time;
默认值
send_timeout 60s;
上下文 mgmt

设置向实例管理器发送请求的超时时间。超时时间仅在两次连续写入操作之间设置,而不是整个请求的传输。如果实例管理器在此时间内未收到任何内容,则关闭连接。

语法 ssl on | off;
默认值
ssl on;
上下文 mgmt

为与实例管理器的所有连接启用 HTTPS 协议。

语法 ssl_certificate file;
默认值
上下文 mgmt

指定用于向实例管理器进行身份验证的 PEM 格式证书的 file

语法 ssl_certificate_key file;
默认值
上下文 mgmt

指定用于向实例管理器进行身份验证的 PEM 格式密钥的 file

语法 ssl_ciphers ciphers;
默认值
ssl_ciphers DEFAULT;
上下文 mgmt

指定向实例管理器发送请求时启用的密码。密码以 OpenSSL 库可以理解的格式指定。

可以使用“openssl ciphers”命令查看完整列表。

语法 ssl_crl file;
默认值
上下文 mgmt

指定 PEM 格式的已吊销证书 (CRL) 的 file,用于 验证 实例管理器的证书。

语法 ssl_name name;
默认值
ssl_name ssl_name host;
上下文 mgmt

允许覆盖用于 验证 实例管理器证书的服务器名称,并在与实例管理器建立连接时通过 SNI 传递

语法 ssl_password_file file;
默认值
上下文 mgmt

指定一个 file,其中包含 密钥 的密码,其中每个密码都在单独的行中指定。加载密钥时会依次尝试密码。

语法 ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
默认值
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
上下文 mgmt

为向实例管理器发送的请求启用指定的协议。

语法 ssl_server_name on | off;
默认值
ssl_server_name off;
上下文 mgmt

在与实例管理器建立连接时启用或禁用通过 TLS 服务器名称指示扩展 (SNI,RFC 6066) 传递服务器名称。

语法 ssl_trusted_certificate file;
默认值
上下文 mgmt

指定 PEM 格式的可信 CA 证书的 file,用于 验证 实例管理器的证书。

语法 ssl_verify on | off;
默认值
ssl_verify off;
上下文 mgmt

启用或禁用实例管理器证书的验证。

语法 ssl_verify_depth number;
默认值
ssl_verify_depth 1;
上下文 mgmt

设置实例管理器证书链中的验证深度。

语法 usage_report [endpoint=address] [interval=time];
默认值
上下文 mgmt

设置 IP 的 addressport,或安装实例管理器的 UNIX 域套接字的 path,默认为 nginx-mgmt.localinterval 设置向实例管理器发送报告之间的间隔,默认为 30 分钟。

语法 uuid_file file;
默认值
uuid_file logs/uuid;
上下文 mgmt

指定一个 file 来保存 nginx 实例的 ID。

示例

uuid_file /var/lib/nginx/nginx.id; # path for Linux
uuid_file /var/db/nginx/nginx.id;  # path for FreeBSD

避免直接更改文件内容。