ngx_http_api_module 模块 (1.13.3) 提供了用于访问各种状态信息、动态配置上游服务器组和管理键值对的REST API,而不需要重新配置 nginx。
注意:该模块取代了 ngx_http_status_module 和 ngx_http_upstream_conf_module 模块。
当使用 PATCH 或 POST 方法时,请确保负载不超过读取客户端请求体所需的缓冲区大小,否则可能返回 413 (request Entity Too Large) 错误。
注意:该模块作为我们商业订阅的一部分提供。
http { upstream backend { zone http_backend 64k; server backend1.example.com weight=5; server backend2.example.com; } proxy_cache_path /data/nginx/cache_backend keys_zone=cache_backend:10m; server { server_name backend.example.com; location / { proxy_pass http://backend; proxy_cache cache_backend; health_check; } status_zone server_backend; } keyval_zone zone=one:32k state=one.keyval; keyval $arg_text $text zone=one; server { listen 127.0.0.1; location /api { api write=on; allow 127.0.0.1; deny all; } } } stream { upstream backend { zone stream_backend 64k; server backend1.example.com:12345 weight=5; server backend2.example.com:12345; } server { listen 127.0.0.1:12345; proxy_pass backend; status_zone server_backend; health_check; } }
所有API请求都在URI中包含受支持的API版本。使用此配置的API请求示例:
http://127.0.0.1/api/7/ http://127.0.0.1/api/7/nginx http://127.0.0.1/api/7/connections http://127.0.0.1/api/7/http/requests http://127.0.0.1/api/7/http/server_zones/server_backend http://127.0.0.1/api/7/http/caches/cache_backend http://127.0.0.1/api/7/http/upstreams/backend http://127.0.0.1/api/7/http/upstreams/backend/servers/ http://127.0.0.1/api/7/http/upstreams/backend/servers/1 http://127.0.0.1/api/7/http/keyvals/one?key=arg1 http://127.0.0.1/api/7/stream/ http://127.0.0.1/api/7/stream/server_zones/server_backend http://127.0.0.1/api/7/stream/upstreams/ http://127.0.0.1/api/7/stream/upstreams/backend http://127.0.0.1/api/7/stream/upstreams/backend/servers/1
语 法:api [write=on|off]; 默认值:— 上下文:location
打开周围 location 的 REST API 接口,应限制对该 location 的访问。
write 参数决定 API 是只读还是读写。默认情况下,API 是只读的。
所有 API 请求都应在 URI 中包含受支持的 API 版本。如果请求 URI 等于 location 前缀,则返回支持的 API 版本列表。当前 API 版本为 “7”。
请求行中的可选 “fields” 参数指定将输出请求对象的哪些字段:
http://127.0.0.1/api/7/nginx?fields=version,build
语 法:status_zone zone; 默认值:— 上下文:server, location, if in location
该指令出现在 1.13.12 版中。
启用收集指定区域中的虚拟 http 或流服务器状态信息,多个服务器可能共享同一个区域。
从 1.17.0 开始,可以按 location 收集状态信息。特殊值 off 禁用嵌套 location 块中的统计信息收集。注意,统计信息是在处理结束的位置上下文中收集的。如果在请求处理期间发生内部重定向,则可能与原始位置不同。
版本 7 中添加了每个 HTTP upstream、server 区域和 location 区域的响应中的代码数据。
/stream/limit_conns/ 数据是在第6版中添加的。
/http/limit_conns/ 数据是在第6版中添加的。
/http/limit_reqs/ 数据是在第6版中添加的。
从第5版开始,可以设置或更改键值对的 “expire” 参数。
/resolvers/ 数据是在第5版中添加的。
/http/location_zones/ 数据是在第5版中添加的。
nginx 错误对象的 path 和 method 字段在第4版中被移除。这些字段在早期的 api 版本中继续存在,但显示为空值。
/stream/zone_sync/ 数据是在第3版中添加的。
在版本 2 中添加了 drain 参数。
/stream/keyvals/ 数据是在第2版中添加的。
关于接口列表的详细信息,请访问 nginx 官网。地址如下:
http://nginx.org/en/docs/http/ngx_http_api_module.html#endpoints
nginx 对象:关于 nginx 的一般信息
Processes 对象:异常终止和重新生成的子进程总数
Connections 对象:接受、丢弃、活动和空闲连接的数量
SSL 对象:成功的 SSL 握手总数、握手失败的总数、握手期间重新使用的会话总数
关于响应对象定义,请查看 nginx 官网。地址如下:
http://nginx.org/en/docs/http/ngx_http_api_module.html#definitions