# 服务端配置

> 查阅服务端配置参数与默认值

---

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

---

NPS 从运行目录下的 `conf/nps.conf` 读取配置。直接运行二进制时，运行目录通常是 NPS 可执行文件所在目录；安装为系统服务后通常是 `/etc/nps`。使用 `-conf_path=/path/to/nps` 可以指定新的运行目录，此时配置文件路径为 `/path/to/nps/conf/nps.conf`。

> 首次启动时若 `conf/nps.conf` 不存在会**自动生成默认配置**。`web_username` 固定为 `admin`，`web_password`、`auth_key` 和 `auth_crypt_key` 会生成随机值并打印到终端，请在启动日志或配置文件中查看。

下表“默认值”以代码首次自动生成的 `nps.conf` 为准。标为“未配置”的参数不会写入自动生成的文件，需要时再手动添加。修改 `nps.conf` 后应重启 NPS；监听端口、桥接协议等启动参数不会通过 Web 保存而重新创建。

## 通用配置

| 名称                      | 默认值     | 说明                                                                                                                      |
| ------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------- |
| bridge_type               | `tcp`      | NPC 与 NPS 的桥接协议，取值为 `tcp` 或 `kcp`；使用 `kcp` 时 `bridge_port` 是 UDP 端口                                     |
| bridge_ip                 | `0.0.0.0`  | 桥接监听 IP                                                                                                               |
| bridge_port               | `8024`     | 客户端连接端口                                                                                                            |
| tls_enable                | `true`     | 是否开启 TLS 桥接；仅在 `bridge_type=tcp` 时生效                                                                          |
| tls_bridge_port           | `8025`     | TLS 桥接端口，默认 `8025`。**与 `bridge_port` 并存**：客户端可分别用 `bridge_port`（明文）或 `tls_bridge_port`（TLS）接入 |
| tls_cert_file             | （空）     | 桥接 PEM 证书链路径，与 `tls_key_file` 成对配置；相对路径从 NPS 运行目录解析                                              |
| tls_key_file              | （空）     | 桥接 PEM 私钥路径；两项都为空时自动生成并复用 `conf/tls/bridge.pem`、`conf/tls/bridge.key`                                |
| tls_self_signed_name_mode | `standard` | 新自签名证书的名称模式：`standard` 为 CN=localhost、O 留空；`random` 随机生成 CN/O。已有及外部证书不受影响                |
| disconnect_timeout        | `60`       | 多路复用连接连续未收到心跳的检查次数，每次间隔 5 秒；`60` 约为 5 分钟                                                     |
| public_vkey               | `123`      | 公共验证密钥，允许 NPC 通过 `npc.conf` 临时提交客户端和隧道；留空关闭                                                     |
| flow_store_interval       | `1`        | 流量数据持久化间隔，单位分钟；留空、无效值或 `0` 表示不持久化                                                             |
| log_level                 | `6`        | 日志级别 0~7                                                                                                              |
| log_path                  | `nps.log`  | 日志文件路径                                                                                                              |
| ip_limit                  | 未配置     | 是否要求访问来源 IP 先通过 `npc register` 临时登记；`true` 开启，留空或 `false` 关闭                                      |

> 自动生成的 `public_vkey=123` 是公开配置客户端的共享凭据。无需通过 NPC 配置文件创建隧道时应将其留空；需要使用时应改为独立的随机值，不能继续使用示例值 `123`。

桥接证书的信任配置、持久化和名称模式切换详见[桥接证书与身份验证](/extend/feature/bridge-tls-certificates.html)。桥接证书启动时加载，更新后需要重启 NPS；路径不完整或证书无效时启动失败，不会回退生成另一张证书。

## HTTP(S) 隧道

| 名称                   | 默认值    | 说明                                                                                                    |
| ---------------------- | --------- | ------------------------------------------------------------------------------------------------------- |
| http_proxy_ip          | `0.0.0.0` | HTTP(S) 隧道监听 IP，默认 `0.0.0.0`                                                                     |
| http_proxy_port        | `80`      | HTTP(S) 隧道的 HTTP 端口（默认 `80`），留空关闭                                                         |
| https_proxy_port       | `443`     | HTTP(S) 隧道的 HTTPS 端口（默认 `443`），留空关闭。详见[使用 HTTPS](/server/nps_extend.html#使用-https) |
| show_http_proxy_port   | `true`    | HTTP(S) 隧道访问地址是否拼接非 80/443 端口，`true` / `false`                                            |
| http_add_origin_header | `true`    | 是否在 HTTP(S) 请求头中追加 `X-Forwarded-For` / `X-Real-IP`，用于内网获取真实 IP                        |
| http_cache             | `false`   | 保留的 HTTP 响应缓存开关；当前实现不会填充缓存，不应作为可用缓存功能启用                                |
| http_cache_length      | `100`     | 缓存容器的条目数上限，`0` 表示不限制；仅在 `http_cache=true` 时读取                                     |

当前版本的缓存实现边界和替代方案见 [HTTP 响应缓存（未实现）](/extend/feature/http-cache.html)。

## Web 管理

| 名称                       | 默认值            | 说明                                                            |
| -------------------------- | ----------------- | --------------------------------------------------------------- |
| web_host                   | `a.o.com`         | Web 管理使用的二级域名，端口复用时用于区分服务                  |
| web_username               | `admin`           | Web 登录用户名                                                  |
| web_password               | 首次启动随机生成  | Web 登录密码                                                    |
| web_port                   | `8081`            | Web 管理端口，留空关闭 Web 管理                                 |
| web_ip                     | `0.0.0.0`         | Web 管理监听 IP                                                 |
| web_base_url               | （空）            | Web 管理子路径，例如 `/nps`，用于反向代理到子路径               |
| web_open_ssl               | `false`           | Web 管理是否启用 HTTPS                                          |
| web_cert_file              | `conf/server.pem` | Web 管理 HTTPS 证书路径                                         |
| web_key_file               | `conf/server.key` | Web 管理 HTTPS 私钥路径                                         |
| open_captcha               | `false`           | 登录是否开启验证码校验                                          |
| allow_user_login           | `true`            | 是否允许多用户登录，开启后用户名为 `user`，密码为客户端验证密钥 |
| allow_user_register        | `false`           | 是否允许从登录页注册账号                                        |
| allow_user_change_username | `true`            | 多用户登录后是否允许修改用户名                                  |

## API 鉴权

| 名称           | 默认值           | 说明                                                      |
| -------------- | ---------------- | --------------------------------------------------------- |
| auth_key       | 首次启动随机生成 | Web API 鉴权密钥，详见 [Web API](/extend/api.html)        |
| auth_crypt_key | 首次启动随机生成 | `auth/getauthkey` 接口的 AES 加密密钥，**必须为 16 字节** |

## P2P 连接

| 名称     | 默认值 | 说明                                                      |
| -------- | ------ | --------------------------------------------------------- |
| p2p_ip   | 未配置 | 访问端和提供端可达的 NPS 地址，使用 P2P 连接时必填        |
| p2p_port | 未配置 | P2P 使用的 UDP 起始端口；NPS 同时监听该端口及后续两个端口 |

## 限制开关

这些参数控制 Web 管理是否显示或允许设置对应能力。首次生成的配置中，除 `allow_local_proxy` 外均按下表启用；改为 `false` 不会自动清除已经保存的客户端或隧道参数。

| 名称                       | 默认值  | 说明                                                                     |
| -------------------------- | ------- | ------------------------------------------------------------------------ |
| allow_flow_limit           | `true`  | 是否启用客户端流量限制                                                   |
| allow_rate_limit           | `true`  | 是否启用客户端带宽限制                                                   |
| allow_tunnel_num_limit     | `true`  | 是否启用客户端最大隧道数限制                                             |
| allow_connection_num_limit | `true`  | 是否启用客户端最大连接数限制                                             |
| allow_multi_ip             | `true`  | 是否允许每个隧道监听不同的服务端 IP                                      |
| allow_local_proxy          | `false` | 是否允许由 NPS 服务端连接目标                                            |
| allow_ports                | 未配置  | 限制可开放的隧道端口范围，例如 `9001-9009,10001,11000-12000`，留空不限制 |
| system_info_display        | `true`  | 是否在 Web 上展示服务端系统信息图表                                      |

## TCP 新连接限频默认值

这些参数只作用于 `mode=tcp` 的普通 TCP 隧道，是尚未在 Web 全局设置中保存对应配置时的后备值。单条隧道还可以继承、覆盖或关闭限频，详见 [TCP 白名单与连接限频](/extend/feature/tcp-access-control.html)。

| 名称                   | 默认值 | 说明                           |
| ---------------------- | ------ | ------------------------------ |
| tcp_conn_limit_enabled | `true` | 是否默认启用来源 IP 新连接限频 |
| tcp_conn_limit_max     | `600`  | 滑动窗口内允许的新连接数       |
| tcp_conn_limit_window  | `600`  | 滑动窗口长度，单位秒           |
| tcp_conn_limit_ban     | `600`  | 触发后封禁时长，单位秒         |

## debug / pprof

| 名称       | 默认值 | 说明                                                           |
| ---------- | ------ | -------------------------------------------------------------- |
| pprof_ip   | 未配置 | debug pprof 监听 IP；必须和 `pprof_port` 同时配置              |
| pprof_port | 未配置 | debug pprof 监听端口；必须是有效端口，并和 `pprof_ip` 同时配置 |
