模块 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 安装情况报告给 NGINX 管理套件实例管理器 (1.25.3)。默认情况下,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 时间;
默认值:
connect_timeout 15s;
上下文: mgmt

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

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

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

语法: read_timeout 时间;
默认值:
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格式证书文件。

语法: ssl_certificate_key 文件;
默认值:
上下文: mgmt

指定一个 PEM 格式的密钥文件,用于身份验证到 Instance Manager。

语法: ssl_ciphers 密码;
默认值:
ssl_ciphers DEFAULT;
上下文: mgmt

指定请求到 Instance Manager 的启用密码。密码格式按照 OpenSSL 库理解的格式指定。

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

语法: ssl_crl 文件;
默认值:
上下文: mgmt

指定一个 PEM 格式的已吊销证书(CRL)文件,用于验证 Instance Manager 的证书。

语法: ssl_name 名称;
默认值:
ssl_name ssl_name host;
上下文: mgmt

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

语法: ssl_password_file 文件;
默认值:
上下文: mgmt

指定一个包含密码的文件,用于加载密钥时逐行尝试每个密码。密码用于密钥

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

为请求到 Instance Manager 启用指定的协议。

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

在与 Instance Manager 建立连接时,启用或禁用通过TLS Server Name Indication extension(SNI,RFC 6066)传递服务器名称。

语法: ssl_trusted_certificate 文件;
默认值:
上下文: mgmt

指定一个用于验证实例管理器证书的 PEM 格式的受信任 CA 证书文件。

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

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

语法: ssl_verify_depth 数字;
默认值:
ssl_verify_depth 1;
上下文: mgmt

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

语法: usage_report [endpoint=地址] [interval=时间];
默认值:
上下文: mgmt

设置实例管理器安装的 IP 的 地址端口,或 UNIX 域套接字的 路径,默认为 nginx-mgmt.localinterval 设置报告到实例管理器的间隔,默认为 30 分钟。

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

指定一个保存 nginx 实例 ID 的 文件

示例:

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

应避免直接更改文件内容。