# 按 URL 路径选择不同后端

> 为同一域名配置多个路径前缀，并把请求转发到不同内网服务

---

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

---

同一个域名可以创建多条 HTTP(S) 隧道规则，通过“URL 路径前缀”把请求分给不同内网服务。例如 API、静态资源和默认站点可以共用一个公网域名。

## 配置示例

为 `app.example.com` 创建三条规则：

| URL 路径前缀 | 目标地址（IP:端口） | 匹配示例          |
| ------------ | ------------------- | ----------------- |
| `/api/`      | `192.168.1.20:8080` | `/api/users`      |
| `/static/`   | `192.168.1.21:8080` | `/static/app.css` |
| 留空         | `192.168.1.22:3000` | 其他所有路径      |

留空按 `/` 匹配；多个规则同时匹配时使用最长前缀，所以 `/api/admin/` 可以覆盖更宽的 `/api/`。

配置文件模式：

```ini
[api]
host=app.example.com
location=/api/
target_addr=192.168.1.20:8080
```

## 匹配规则

- 匹配是区分大小写的字面前缀，不是正则表达式。
- 建议目录规则以 `/` 结尾；`/api` 也会匹配 `/apix`。
- NPS 只按前缀选择目标，不会移除路径。后端仍收到完整的 `/api/users`。
- HTTP keep-alive 后续请求会再次检查 Host 和路径，必要时切换规则。
- HTTPS 必须在 NPS 上配置证书并终止 TLS。TLS 透传看不到 URL 路径，不能可靠地做路径分流。

为每个目标准备一个可识别的健康或版本响应，逐条请求边界路径，例如 `/api/`、`/api2`、`/static/` 和 `/`。出现路由错误时，先检查是否缺少尾部斜杠，以及是否存在更长的前缀规则抢先匹配。
