用 services.toml 发布服务

先确认本机应用可用,再由 Node 声明并上报 Service,最后在访问授权中决定谁可以使用。NSD 不替你创建、扫描或健康检查后端应用。

配置位置默认 /etc/nsio/services.toml,也可由 --services-file 显式覆盖。
上报方式运行中的 NS 读取完整集合,通常约 5 秒热重载并重新上报。
访问边界Service 出现在目录中不等于任何其他主体已经获准访问。

services.toml 是 Node 的本地服务声明,也是本机最终边界。默认路径为 /etc/nsio/services.toml,也可用 ns up --services-file <PATH>指定。文件缺失表示不发布任何 Service;文件存在但语法/字段错误应明确失败。

也可从 NSD 服务页点击 使用说明打开本指南。

示例

[settings]
strict = true

[services.internal-web]
protocol = "http"
host = "127.0.0.1"
port = 8080
description = "Internal web application"
enabled = true

[services.postgres-readonly]
protocol = "tcp"
host = "127.0.0.1"
port = 5432
description = "Read-only reporting database"
enabled = true
字段怎么填常见错误
[services.<name>]使用稳定、可识别且在本机唯一的名称改名会形成新的 Service 身份并影响旧授权
protocol与真实应用一致:HTTP、HTTPS、TCP 或 UDP把 HTTPS 后端声明成 HTTP,或反过来
host优先使用 127.0.0.1 或最小必要接口为“先跑通”绑定全部接口,扩大旁路访问面
port本机应用实际监听端口只看配置,不检查进程是否监听
enabled需要上报时为 true注释配置却忘记等待完整集合重新上报

上线步骤

  1. 在 Node 本机用 ss、lsof 或应用自带健康检查确认目标地址、端口和协议。
  2. 写入/修改配置并限制文件权限;Service 配置不应包含应用密码、API Key 或证书私钥。
  3. 保存文件;运行中的 NS 通常约 5 秒内热重载并重新上报,无需重启。仅当进程未运行时才重新执行 ns up --detach --wait-ready。
  4. 执行 ns status --all,并在 NSD 服务核对完整集合、上报 Node、协议、端口与最后同步时间。
  5. 打开 访问授权,选择准确主体与该 Service;不要为了验证一个端口而授权整个 Node。
  6. 从获授权设备访问 Service 地址,再从未授权设备验证不可见且不可达。

完成标准:NSD 中的名称、协议、端口、上报 Node 和最后同步时间与本机声明一致;已授权设备真实访问成功,未授权设备既不可见也不可达。

更新与删除

Node 上报的是当前完整集合。改名通常表现为删除旧资源再新增,这会产生新的 Service 身份并使基于旧 ID 的授权不再匹配。安全变更顺序是:新增新定义 → 等待上报 → 新增授权并验证 → 迁移调用方 → 删除旧授权和旧定义。

删除 Service 前先确认访问授权、公网入口、监控和业务调用方。删除配置后等待最新上报,确保目录不再显示可用;删除 Service 不会替你停止本机应用进程。

常见失败

  • 本机地址/端口未监听;
  • HTTP/HTTPS 协议声明与真实服务不一致;
  • 当前 Node 位于错误 Space;
  • Service 已发布但没有访问授权;
  • 服务目录是最新的,但客户端仍使用切换前缓存。
允许获授权设备使用 Service 地址完成真实应用请求。
拒绝未授权设备看不到目录项,并且直接连接也失败。
后端Node 上本机端口、应用日志和 NSD 上报内容完全一致。