# 让桥接、站点与管理端共用一个端口

> 在端口受限的网络中，让 NPC 桥接、HTTP(S) 隧道和 Web 管理共用 TCP 端口

---

LLMS 索引： [llms.txt](/llms.txt)

---

端口复用可以让明文 TCP 桥接、HTTP(S) 隧道入口和 Web 管理共用一个 TCP 端口，适合公网只允许开放少量端口的环境。NPS 会根据连接开头的协议特征分流。

## 服务端配置

以下示例共用 `443`：

```ini
bridge_type=tcp
bridge_port=443
http_proxy_port=443
https_proxy_port=443
web_port=443
web_host=admin.nps.example.com
```

重启 NPS，并把以下 DNS 记录都解析到服务端：

- `admin.nps.example.com`：Web 管理。
- 业务域名：HTTP(S) 隧道。

Web 管理依赖 HTTP `Host` 与 `web_host` 精确区分。使用 IP 或其他 Host 访问会进入业务 HTTP 入口，而不是管理端。

## 客户端连接

普通 NPC 仍连接同一个桥接端口：

```shell
./npc -server=nps.example.com:443 -vkey=客户端验证密钥
```

端口复用只基于 TCP。KCP 使用 UDP，TLS 桥接使用独立的 `tls_bridge_port`，不能按以上方式合并到复用端口。

## 限制与验证

- Web 管理复用适用于明文 HTTP 识别；需要安全访问时，建议在受控网络/VPN 中使用，或让外层反向代理单独终止管理端 HTTPS。
- HTTP 识别支持常用的 GET、POST、HEAD、PUT、DELETE、CONNECT、OPTIONS 和 TRACE。依赖其他方法的首个请求应先实测。
- 复用监听会绑定所有地址，需使用防火墙限制管理域名对应入口的访问来源。
- 修改任一端口或 `web_host` 都需要重启 NPS。

重启后分别验证 NPC 上线、业务 HTTP、业务 HTTPS 和管理域名，不能只检查端口处于 LISTEN：

```shell
curl -I -H 'Host: admin.nps.example.com' http://127.0.0.1:443/
curl -I -H 'Host: app.example.com' http://127.0.0.1:443/
```

---

反链：

- [使用 KCP 连接 NPS](/extend/feature/kcp.html)
