# 自定义 HTTP 隧道的 404 页面

> 重新构建 NPS，为 HTTP 隧道替换后端连接失败时的全局 404 页面

---

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

---

HTTP 隧道已经匹配域名规则，但客户端不可用、流量超限或目标连接失败时，会以 `404 Not Found` 返回内置错误页。自定义模板位于项目目录：

```text
web/static/page/error.html
```

## 自定义方法

该模板会编译进 NPS 二进制。修改已安装程序运行目录中的同名文件不会生效，必须在项目中修改模板后重新构建并替换 NPS：

```shell
go build -o nps ./cmd/nps
```

然后重启 NPS。建议保持页面为自包含 HTML，例如：

```html
<!doctype html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>服务暂不可用</title>
  </head>
  <body>
    <h1>服务暂不可用</h1>
    <p>请稍后重试。</p>
  </body>
</html>
```

## 注意事项

- 错误页是全局资源，所有 HTTP 隧道共用，不能按域名单独设置。
- 不要依赖相对路径 CSS、图片或脚本；这些请求仍需经过域名路由，故障时可能同样不可用。
- 不要在页面中暴露内网地址、客户端验证密钥或具体堆栈信息。
- 未匹配到域名规则的请求不保证返回该模板；应由前置反向代理提供默认站点或兜底响应。
- HTTPS 入口目前不能可靠返回这份自定义正文；TLS 透传失败时通常只能关闭连接。

部署后使用一个存在的 HTTP 域名规则，临时停止其 NPC 或填写不可达目标，确认状态码、正文和字符集符合前端监控预期。
