NocoBase CLI `nb proxy nginx status` 命令详解:查看 Nginx 代理运行状态
2026/9/13 23:30:20 网站建设 项目流程

NocoBase CLInb proxy nginx status命令详解:查看 Nginx 代理运行状态

【免费下载链接】nocobaseNocoBase is an open-source AI + no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase

nb proxy nginx status是 NocoBase CLI 中用于查看当前 Nginx 反向代理运行状态的核心命令,它会基于当前选中的 driver(localdocker)输出代理进程状态、配置文件位置以及运行环境等关键信息。读完本文你将掌握该命令的用法、每个输出字段的含义与取值、不同 driver 下的输出差异,以及它背后的源码级状态检测原理,并能将其嵌入 Nginx 代理的日常运维与排障流程。

命令背景:nb proxy nginx命令组

在 NocoBase 的 CLI 体系中,nb proxy nginx是 Nginx provider 的命令组入口(源码见 index.ts)。它负责两件事:

  • 选择 Nginx 的运行方式,即local(本机直接运行 Nginx 进程)或docker(以容器方式运行 Nginx);
  • 为 CLI 托管的 env 生成、启动、重载和检查 Nginx 入口。

status命令是这一命令组中的"状态观察"节点,与usecurrentgeneratestartrestartreloadstopinfo等命令协同工作。一个典型的运维流程是:

nb proxy nginx use docker nb proxy nginx generate --env app1 --host app1.example.com nb proxy nginx start nb proxy nginx status nb proxy nginx info

status用于在启动、重载之后确认代理是否真正处于运行状态,是排障时最先执行的检查命令。

命令用法

nb proxy nginx status

该命令无需任何参数,直接读取当前配置并输出一行行键值对信息。命令实现非常简洁(见 status.ts):

public async run(): Promise<void> { await this.parse(ProxyNginxStatus); const runtimeContext = await resolveNginxProxyRuntimeContext(); const status = await getNginxProxyStatus(runtimeContext); this.log(formatNginxProxyStatusLines(status).join('\n')); }

其执行链路是:先通过resolveNginxProxyRuntimeContext()解析当前运行上下文(包括 driver、CLI 根目录、upstream host),再调用getNginxProxyStatus()采集状态,最后用formatNginxProxyStatusLines()格式化为文本输出。

输出字段详解

命令通常会输出以下信息,其中driverstatusconfig三项固定存在,最后一项根据 driver 不同而表现为nginxcontainer(源码见 proxy-nginx.ts):

driver: <local|docker> status: <running|stopped> config: <nginx 主配置文件路径> nginx: <nginx 可执行文件路径> # 仅 local driver

或:

driver: docker status: running config: /apps/.nocobase/proxy/nginx/nocobase.conf container: <docker.container-prefix>-nginx-proxy image: nginx:latest

各字段含义如下:

字段可能取值说明
driverlocaldocker当前 Nginx 代理的运行方式,来源于配置项proxy.nginx-driver,默认值为local(见 cli-config.ts)
statusrunningstopped代理当前是否在运行,由state字段映射而来
config文件路径Nginx 主配置文件的输出位置,对应resolveEnvProxyMainOutputPath()的结果并映射到运行时根目录
nginx(local 时)可执行文件路径bin.nginx配置项指定的 Nginx 可执行文件,默认值为nginx
container(docker 时)容器名容器名默认格式为<docker.container-prefix>-nginx-proxy
image(docker 时)镜像名固定使用nginx:latest

其中driver的可选值在源码中被定义为['local', 'docker'],且proxy.nginx-driver配置项在写入时会做严格校验,非法值会直接报错(见 cli-config.ts)。

两种 driver 下的状态判定逻辑

status的核心是getNginxProxyStatus()函数(见 proxy-nginx.ts),它会根据 driver 走两条完全不同的检测路径:

local driver:PID 文件探测进程

当 driver 为local时,命令会:

  1. 解析 Nginx 版本输出得到 PID 文件路径(resolveLocalNginxPidPath());
  2. 读取 PID 文件,解析出整数 PID;
  3. 通过process.kill(pid, 0)探测进程是否存在(见 proxy-nginx.ts)。

若 PID 无效或进程不存在,则判定为stopped;否则为running。此外还会读取bin.nginx配置项,输出 Nginx 可执行文件路径。这种方式不依赖 Nginx 自身的状态接口,仅通过系统进程信号探测,轻量且可靠。

docker driver:容器运行态探测

当 driver 为docker时,命令会:

  1. 解析容器名:resolveNginxProxyContainerName(),格式为<docker.container-prefix>-nginx-proxy
  2. 通过dockerContainerIsRunning(containerName)检查容器是否处于运行态(见 proxy-nginx.ts);
  3. 额外输出container(容器名)与image(固定为nginx:latest)字段。

docker driver 下config字段输出的路径以容器内运行时根目录/apps为基准(DOCKER_NGINX_PROXY_RUNTIME_ROOT = '/apps'),因为 Docker driver 会把宿主机NB_CLI_ROOT挂载到容器内/apps,配置文件随之映射为容器内路径。

实际运行示例

场景一:本地 Nginx 代理正在运行

$ nb proxy nginx status driver: local status: running config: /Users/alice/.nocobase/proxy/nginx/nocobase.conf nginx: /usr/sbin/nginx

场景二:Docker 容器代理已启动

$ nb proxy nginx status driver: docker status: running config: /apps/.nocobase/proxy/nginx/nocobase.conf container: nb-nginx-proxy image: nginx:latest

以上输出形态与仓库测试用例中的断言一致(见 proxy-nginx-command.test.ts),测试中同样覆盖了driver: localstatus: runningconfig: /apps/.nocobase/proxy/nginx/nocobase.conf以及nginx: /usr/sbin/nginx等典型行。

场景三:代理未启动

若本地 Nginx 未启动或 Docker 容器已停止,status字段会显示stopped

$ nb proxy nginx status driver: local status: stopped config: /Users/alice/.nocobase/proxy/nginx/nocobase.conf nginx: nginx

此时可以结合nb proxy nginx start启动代理,再次执行nb proxy nginx status验证是否转为running

使用建议与排障思路

  • statusinfostatus关注"进程/容器是否在运行",info关注"driver、配置路径等静态信息"。排障时先用status确认运行态,再用info核对 driver 与路径是否与预期一致。
  • driver 不匹配时的表现status的输出完全取决于proxy.nginx-driver配置。如果此前通过nb proxy nginx use docker切换了 driver,但实际容器未启动,status会如实显示driver: dockerstatus: stopped,可通过nb proxy nginx start拉起容器。
  • 配置文件路径核对config字段指向 Nginx 主配置文件,若代理状态为running但站点访问异常,可以沿该路径检查生成的 Nginx 配置内容是否正确。

相关命令

  • nb proxy nginx— Nginx provider 命令组入口
  • nb proxy nginx use— 切换 Nginx driver(local/docker
  • nb proxy nginx info— 查看 driver、配置路径与运行信息
  • nb proxy nginx start— 启动 Nginx 代理
  • nb proxy nginx stop— 停止 Nginx 代理
  • nb proxy nginx reload— 重载 Nginx 配置
  • nb proxy nginx restart— 重启 Nginx 代理
  • nb proxy— 代理命令组总入口(支持 nginx 与 caddy 两种 provider)

相关源码文件:命令实现位于 status.ts,核心状态采集与格式化逻辑位于 proxy-nginx.ts,driver 配置解析位于 cli-config.ts,行为验证可参考 proxy-nginx-command.test.ts。

【免费下载链接】nocobaseNocoBase is an open-source AI + no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询