博客 | NGINX

教程: 配置 NGINX 使用情况报告

NGINX-F5-horiz-black-type-RGB 的一部分
阿卡什·阿南塔纳拉亚南 缩略图
阿卡什·阿南塔纳拉亚南
2024 年 5 月 1 日发布

NGINX Plus R31 引入了一种更简单、更有效的方法来报告 NGINX Plus 使用情况。 使用情况报告的本机集成消除了对单独 NGINX 代理的需求,使 F5 灵活消费计划 (FCP) 的客户以及定期订阅的非 FCP 客户的报告流程变得无缝且轻松。 通过直接内置于 NGINX Plus 中的此功能,实例可以定期将必要的使用信息传达给 NGINX 实例管理器,而不会对性能产生任何影响。 此功能适用于虚拟机和 NGINX Ingress Controller,但本博客重点介绍 NGINX Plus 实例——您可以在此处找到有关将 NGINX Ingress Controller 报告给 NGINX 实例管理器的指南。

通过简化设置、提供自定义选项和提供后备方法,我们的目标是使所需的使用情况报告成为一个高效且适应性强的过程,以便客户实施和保持对 FCP 的合规性。 对于尚未使用 R31 或不打算升级的客户,可以通过安装 NGINX 代理或配置 HTTP 健康检查来启用使用情况报告。

笔记: 要报告 NGINX Plus 使用情况,您必须在专用主机上安装NGINX 实例管理器。 请参阅安装指南,了解不同的安装方法。

您可以选择三种方式向 F5 报告 NGINX Plus 实例。

  • NGINX Plus R31 用户 — 配置本机 NGINX 使用情况报告
  • R31 或 R31 之前的用户 — 安装 NGINX 代理
  • R31 之前的用户 — 为 NGINX Plus 配置 HTTP 健康检查

让我们逐一探讨一下:

配置本机 NGINX 使用情况报告

安装后,NGINX Plus 通过默认 DNS 条目“nginx-mgmt.local”建立与 NGINX 实例管理器的自动连接。 默认情况下,每 30 分钟,NGINX Plus 会与实例管理器通信并发送使用信息。 如果您需要更改实例管理器 DNS 条目或更改默认连接间隔以更好地满足您的需求,请将 mgmt{} 块添加到您的 NGINX 配置中。 此外,它还附带其他默认指令,例如 UUID 文件、mTLS、DNS 解析器、使用间隔和 usage_report 端点。 有关可定制指令的完整列表,请参阅全面的mgmtmodule文档。 使用ngx_mgmt_module ,您可以轻松自定义指令,提供更大的灵活性和便利性。

以下部分介绍如何为您的环境配置此功能。

配置 NGINX Plus

  1. 建议使用 mTLS 来增强系统的安全性。 您可以通过为 NGINX Plus 实例和 NGINX 实例管理器生成证书、密钥和 CA 密钥证书来实现此目的。 有关如何生成密钥的更多信息,请单击此处
  2. 在配置文件nginx.conf的管理块里面指定客户端证书和私钥文件的路径。
    		
       管理 {
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers DEFAULT;
    ssl_certificate          /home/ubuntu/agent.crt;
    ssl_certificate_key      /home/ubuntu/agent.key
    }
    
  3. 为了实现安全可靠的身份验证过程,请指定 CA 链的路径来验证证书的真实性。
    
       管理 {
    ssl_trusted_certificate  /home/ubuntu/ca.pem;
    ssl_verify                 开启;
    ssl_verify_depth          2;
    }
    
  4. 对于自定义 DNS 解析器,请使用解析器指令在mgmt{} 块中指定解析器地址。
    
       管理 {
    解析器 3.X.X.X;
    }
    
  5. 要为 NGINX 实例管理器配置自定义 FQDN,请在usage_report指令中指定 FQDN。 然后,向您的本地 DNS 添加一个 A 记录,将主机名与 NGINX 实例管理器 IP 地址关联。
    
       mgmt {
    解析器 3.X.X.X;
    usage_report 端点=nms.local 间隔=15m;
    }
    

NGINX Plus 配置示例:


  mgmt {
usage_report 端点=nms.local 间隔=30m;
解析器 3.X.X.X;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers DEFAULT;
ssl_certificate /home/ubuntu/agent.crt;
ssl_certificate_key /home/ubuntu/agent.key;

ssl_trusted_certificate /home/ubuntu/ca.pem;
ssl_verify on;
ssl_verify_depth 2;
}

保存 NGINX 配置并重新加载 NGINX Plus。

sudo nginx -s 重新加载

配置 NGINX 实例管理器

在服务器块内的 /etc/nginx/conf.d/nms-HTTP.conf 中添加 SSL 证书。 单击此处了解如何在 NGINX 管理套件服务器中配置 SSL 证书。


服务器 {
listen 443 ssl http2;
root /var/www/nms;
server_name _;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_certificate /etc/nms/certs/server.crt;
ssl_certificate_key /etc/nms/certs/server.key;
ssl_client_certificate /etc/nms/certs/ca.pem;
ssl_verify_client on;
}

要查看 NGINX Plus 使用情况,请在浏览器上登录 NGINX 管理套件并导航到 NGINX 实例管理器模块。 然后,选择位于页面左下方的 NGINX Plus 选项卡。

NGINX Plus 随时间变化的实例清单

观看此视频教程,获取分步说明:

错误日志消息

当您无法在 NGINX 实例管理器中看到使用情况数据时,以下是要在 NGINX Plus 实例中排除故障的错误消息列表: 以下是一些错误消息的示例:

  • 动态解析器故障: 无法解析 DNS 解析器。
    2024/04/02 04:02:10 [错误] 574079#574079: recv() 失败 (111: 连接被拒绝)解析时,解析器: 3.17.128.165:53
    2024/04/02 04:02:35 [警告] 574079#574079:使用情况报告:无法解析 nginx-mgmt.locals(110: 操作超时)
    
  • 系统解析器故障: 无法解析 NGINX 实例管理器主机名
    2024/04/02 13:20:44 [信息] 103888#0:使用情况报告:在解析器“nginx-mgmt.local”中未找到主机
    
  • SSL 连接失败: 无法验证 SSL 证书或者其已过期。
    2024/04/02 13:13:50 [警告] 103877#0:使用情况报告:对等 SSL 连接失败
    
  • 对等通信失败: 无法访问 NGINX 实例管理器。
    2024/04/02 13:15:25 [警告] 103877#0:使用情况报告:对等连接失败(-1: 未知错误)
    2024/04/02 13:23:32 [警告] 103877#0:使用情况报告:失败(服务器返回: 404 未找到)
    2024/04/02 19:53:45 [警告] 4648#4648:使用情况报告:连接超时
    

安装 NGINX 代理

如果您尚未迁移到 R31 或者不打算很快迁移,您仍然可以将您的 NGINX Plus 实例报告给 NGINX 实例管理器。 您可以通过在您的环境中安装 NGINX 代理来实现这一点。 安装完成后,您可以与实例管理器建立连接并开始传输使用数据。 要安装 NGINX 代理,请按照此链接提供的说明进行操作。

要查看 NGINX Plus 使用情况,请在浏览器上登录 NGINX 管理套件并导航到 NGINX 实例管理器模块。 然后,选择位于页面左下方的 NGINX Plus 选项卡。

NGINX Plus 随时间变化的实例清单

观看此视频教程,获取分步说明:

为 NGINX Plus 配置 HTTP 健康检查

如果您不打算安装 NGINX Agent 或升级到 R31,您仍然可以报告您的 NGINX Plus 实例。 这可以通过 NGINX 配置文件配置 HTTP 健康检查来实现。 但是,您必须手动更新 NGINX Plus 配置文件才能使用此选项。 这种方法可能很耗时而且麻烦,特别是当您的环境有多个实例时。 因此,建议在选择此选项之前考虑这些因素。

配置 NGINX Plus

  1. 打开 NGINX Plus 配置并在 http {} 块内插入代码:
    
       keyval_zone zone=uuid:32K state=/var/lib/nginx/state/instance_uuid.json; keyval 1 $nginx_uuid zone=uuid; 上游接收器 { zone 接收器 64k; # 必需: 使用 NGINX 管理套件 IP 地址或主机名更新 NMS_FQDN。# 如果使用主机名进行配置,请确保取消注释下面的解析器 # 指令并定义可以解析主机名的 DNS 服务器。服务器 NMS_FQDN:443; # 可选: 使用可以解析# 上面定义的主机名的 DNS 服务器 IP 地址更新 DNS_UP。#resolver DNS_IP; } map CERT $repo_crt { # 可选: 客户端证书的位置默认为 /home/ubuntu/agent.crt; } map KEY $repo_key { # 可选: 客户端证书私钥的位置默认为 /home/ubuntu/agent.key; } server { location @ngx_usage_https { # 可选: 在这里配置方案(http|https)proxy_pass https://receiver; # 必需: 如果在此实例上使用 NGINX APP PROTECT (NAP),请在以下行设置 nap=active:proxy_set_header Nginx-Usage "Version=$nginx_version;Hostname=$hostname;uuid=$nginx_uuid; nap=active "; health_check uri=/api/nginx-usage interval=1800s; # DO NOT MODIFY proxy_ssl_certificate $repo_crt; # DO NOT MODIFY proxy_ssl_certificate_key $repo_key; # DO NOT MODIFY } location @self { health_check uri=/_uuid interval=1d; proxy_pass http://self; } location = /_uuid { if ($nginx_uuid !~ .) { set $nginx_uuid $request_id; } return 204; } 监听 unix:/tmp/ngx_usage.sock; } 上游自身 { 区域自身 64k; 服务器 unix:/tmp/ngx_usage.sock; }
    
  2. 使用您的实例管理器主机名或 IP 地址更新 NMS FQDN。 如果您使用的是私有 DNS,请取消注释并更新您的 DNS IP 地址。
  3. 为了确保到 NGINX 实例管理器的 HTTP 流量的安全,必须在映射 CERT 和映射 KEY 块中指定 SSL 证书和密钥的位置。

保存更改并重新加载 NGINX。

sudo nginx -s 重新加载

要查看 NGINX Plus 使用情况,请在浏览器上登录 NGINX 管理套件并导航到 NGINX 实例管理器模块。 然后,选择页面左下方的 NGINX Plus 选项卡。

NGINX Plus 随时间变化的实例清单

观看此视频教程,获取分步说明:

结论

我们致力于满足您的需求,并帮助您轻松简化和自动化使用情况报告。 这就是我们提供多种灵活报告选项的原因。 最近发布的 NGINX Plus R31 更新使报告 NGINX Plus 实例的每月使用数据变得更加简单和高效 - 而不会影响性能,同时确保符合 F5 的要求。


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”