地址
设置 → 地址 决定在哪里可以访问面板,以及它在那里提供什么:管理面板、订阅、API、网站、其他程序,或固定回答。只有主管理员能打开此页面。更改会立即生效,无需重启;如果两分钟内未被确认,会自动撤回。


第一个地址
主监听器 是安装面板时所用的地址,它始终保留:
- 它可以编辑,包括端口、地址和 TLS,但不能删除、关闭或被另一个监听器取代。
- 它始终带有一个 面板 路由,并提供订阅:通过一个 订阅 路由,或在面板路由上选中 订阅。
- 这两个路由标记为 主路由。它们的主机、路径前缀和选项可以编辑,但不能删除、更换服务、绑定到账户或移出主监听器。
- 设置向导会写入它。在面板只有这一个地址期间,
nx-panel config get和config set可以在服务器上读取和写入它,nx-panel ingress reset会重建它(命令行)。 - 在 Docker 中,它的端口由 compose 文件固定。
在本页所做的更改立即生效。从服务器命令行所做的更改在面板下次启动时生效。
请求如何得到回答
- 一个 监听器 在它的端口上接受连接,并使用它自己的 TLS。
- 依次尝试该监听器上的 路由。第一个主机和路径前缀都匹配、且其服务接受该路径的路由作答。
- 没有任何路由接手的请求会得到 兜底回答:先是路由的,其次是监听器的,否则是普通的“未找到”。
兜底回答只应答面板拒绝的请求。面板自己的错误,例如密码错误或 API 的“未找到”,永远不会被替换。
监听器
监听器是面板绑定的一个端口。主监听器 是面板始终会在其上启动的那个:它始终开启,在 Docker 中它的地址由 compose 文件固定。
| 字段 | 作用 |
|---|---|
| 监听地址 | 本服务器的一个 IP 地址;留空则监听所有地址,包括 IPv4 和 IPv6。 |
| 端口 | 端口。在主监听器上,留空则保持面板启动时使用的端口。 |
| TLS | 普通 HTTP、证书库中的证书(来自 证书)或 磁盘上的证书文件。 |
| 更多证书 | 证书库中的其他证书。客户端请求的名称如果包含在其中某张证书中,就得到那张证书;其余得到监听器自己的证书。 |
| 拒绝未知名称 | 请求的名称不在这里任何证书中的 TLS 握手会被拒绝。只要证书包含该 IP,通过 IP 打开面板仍然可行。 |
| Host 必须与握手一致 | 主机名与其 TLS 握手所请求名称不一致的请求会得到兜底回答。 |
| 受信任的代理 | 此监听器信任其 X-Forwarded-For 的地址和 CIDR。主监听器的列表就是 安全 中的那个。 |
| 兜底回答 | 此监听器上没有任何路由接手的请求由什么回答。 |
| 直通 | 这些主机名的 TLS 连接会原样转交给另一个 host:port(见下文)。 |
无法绑定端口或证书无法加载的监听器会显示 未在服务 及其原因,其他监听器照常服务。证书无法加载的 TLS 监听器永远不会改为以普通 HTTP 提供服务。主监听器是例外,以便你仍能访问面板:它会退回到普通 HTTP,并注明这一点。
面板在自己的监听器上应答 ACME HTTP-01 和 TLS-ALPN-01 验证。位于 80 和 443 端口的面板仍然可以通过这两种验证获取证书;参见 证书。
直通
直通条目会在面板读取任何内容之前,把某个主机名的 TLS 连接交给另一个程序。该程序用自己的证书终止 TLS。用它与必须看到自己握手的程序共用 443 端口,例如同一台服务器上运行的节点的某个入站。
该程序看到的客户端地址是面板的地址。不会发送 PROXY protocol,因此该程序中按客户端地址的限制经由直通时不起作用。
路由
每个路由都有名称、所在的监听器,以及决定它匹配哪些请求的三项:
- 主机:名称或地址,不带端口。
*.example.com匹配其下一级标签。留空则匹配所有主机。 - 排除主机:对于匹配所有主机的路由,它永不应答的名称。
- 路径前缀:留空或
/name。在服务看到路径之前,前缀会被去掉。
路由从上往下依次尝试;上移 和 下移 改变顺序。
路由提供什么
| 提供 | 接受 | 用途 |
|---|---|---|
| 面板 | 所有路径 | 管理面板及其自身的 API,加上开启的部分:订阅、/api/v1、/metrics、节点安装器 |
| 订阅 | /sub/… | 用户的订阅链接和页面 |
| API | /api/v1/… | 仅供 API 令牌 使用的 API |
| 指标 | /metrics | Prometheus;参见 监控与指标 |
| 节点安装器 | /install… | 节点安装脚本和面板的 CA |
| 静态站点 | 所有路径 | 一个文件目录 |
| 重定向 | 所有路径 | 把每个请求发往另一个地址 |
| 固定回答 | 所有路径 | 对每个请求返回相同的状态码、响应头和正文 |
| 其他程序 | 所有路径 | 到插件或你自己软件的反向代理 |
订阅 路由只接受 /sub,因此同一主机上的其余请求仍会交给下一个路由。
面板路由
谁可以登录 把此路由上的登录限制为主管理员、操作员或代理商。留空则所有账户都可以登录,面板的所有者始终可以登录。
API 路由
API 路由只接受 API 令牌。浏览器的会话在那里会被忽略,登录和初始化页面不在那里,用作令牌的登录会话会被拒绝。令牌 和 插件 把它限制为你选择的令牌;两者都不选时,所有令牌都可以进入。在这里选中的令牌或插件,以及令牌所属的账户,在从路由中移除之前都不能删除。
要让 /api/v1 不出现在面板的公开地址上,请在面板路由上关闭 /api/v1,并给一个 API 路由分配它自己的监听器,例如位于 127.0.0.1 或私有地址上的监听器。
其他程序
代理到 可以是 URL 或 插件。插件目标使用插件自己的地址以及面板为它保存的信任,已暂停插件的路由会以其兜底回答应答。
- 发送请求自己的 Host:关闭时发送目标自己的主机名。
- 去掉前缀:发送前缀之下的路径,而不是完整路径。
- 验证目标:用系统证书颁发机构、用固定的证书 或 不验证。
WebSocket 连接可以通过。面板的会话 cookie 永远不会到达该程序,该程序也无法设置它。出于同样的原因,到其他程序的路由不能与面板路由共用主机:请给它一个自己的主机名;如果面板路由匹配所有主机,请把这个名称列入面板路由的 排除主机。
其他路由字段
| 字段 | 作用 |
|---|---|
| 绑定到账户 | 把路由绑定到一个管理员账户(见下文)。 |
| 仅限自己的客户 | 在绑定到代理商的订阅路由上:任何其他订阅都得到兜底回答。 |
| 允许的地址 | 只应答这些地址或 CIDR;其余得到兜底回答。 |
| 兜底回答 | 此路由匹配但未接手的请求由什么回答。留空则使用监听器的。 |
| 品牌外观 | 此路由页面的外观(见下文)。 |
| 在此发布链接 | 此服务的链接(例如订阅链接)基于此路由生成。 |
| 公开地址 | 当人们通过面板前面的 CDN 或代理访问面板时,生成链接所基于的源地址。 |
| 响应头 | 此路由的响应头。服务自己设置的头优先。 |
| HSTS max-age(秒) | 仅通过 TLS 发送;0 为关闭。 |
绑定到主机的账户
面板路由上的 绑定到账户 让该路由的主机归这个账户所有:
- 在该路由上,只有被绑定的账户能登录或使用其 API 令牌。
- 绑定到某个路由的账户不能在别处登录,其令牌也不能在别处使用。面板的所有者是例外:它始终可以在面板的其他地址上登录。
被拒绝的登录看起来与密码错误完全相同,并且不计入封禁。
绑定到代理商的 订阅 路由就是该代理商的订阅地址。打开 在此发布链接 后,其客户的链接在那里生成。新路由默认打开 仅限自己的客户,这样该域名不会暴露它与另一个代理商的域名共用一个面板。
兜底回答
兜底回答是可重复使用的回答:静态站点、重定向 或 固定回答。列表显示每个兜底回答被哪些监听器和路由使用。
静态站点 把面板服务器上的一个绝对路径目录作为普通网站提供:不列出目录内容,不提供以点开头的文件,缺失的路径使用它自己的 404.html。在升级后的面板上,原来的 伪装目录 在这里是一个静态站点兜底回答。
品牌外观
品牌外观是一种外观,分为两部分:
- 管理面板:产品名称、标志、网站图标、颜色、密度 和 登录页消息。登录页从一开始就以它绘制。
- 订阅页面:主题、标题、支持链接、客户端中的页面链接 和 公告。
标志和网站图标合计最多 256 KB,保存在数据库中,因此包含在每个备份里。
路由在 品牌外观 中选择一个,主管理员也可以在代理商的账户上为它选择一个(代理商)。管理面板采用路由的品牌外观,否则采用该路由所绑定账户的品牌外观。订阅依次采用其所有者的、其路由的,然后是订阅设置。空字段会回退到下一项。
保存与确认
随意编辑,然后点击 保存并应用:
- 面板检查这次更改。会让你当前所用地址失去面板的更改会被拒绝;把监听器放到服务器上已被其他程序占用的端口上的更改也会被拒绝。
- 它立即应用更改。已打开的连接保持不断;只有当监听器的地址改变,或 TLS 被打开或关闭时,监听器才会重启。
- 页面从它当前所在的地址确认更改。如果该地址已无法访问面板,例如你改了它的端口,页面会列出新的地址。请在显示的时间内打开其中一个,在那里确认。
- 两分钟内无人确认的更改会自动撤回。在等待期间被停止的面板会在启动时撤回它。
要把面板迁到别处,请先添加新地址并保存,打开新地址,再从那里删除旧地址。
历史 列出每一次更改:来自本页、来自命令行、升级、恢复备份或 ingress reset。恢复 会应用较早的一次,它也像其他更改一样需要确认。
测试请求
测试请求 显示一个请求会得到什么,而不实际发送请求。选择监听器,并填写主机、路径、TLS 名称和客户端地址。结果会指出接手它的路由以及其服务看到的路径,或应答的兜底回答,并列出它经过的每个路由及原因。针对未保存的更改 会在保存之前测试你的编辑。
警告
对于能保存、能提供服务,但可能不符合你本意的情况,页面会给出警告:
- 某个路由永远不会应答,因为排在前面的路由接手了它的请求;
- 某个路由什么也不应答;
- TLS 监听器上的某个主机名不在它的任何证书中;
- 容器内除主监听器之外的监听器,只有容器发布其端口时才能访问;
- 节点安装器只在它自己的路由上提供,而 节点 上的安装命令使用的是你打开面板时所用的地址。
示例
使用域名、位于 443 端口的面板
- 在 证书 中为
panel.example.com和sub.example.com签发证书。 - 添加一个 443 端口的监听器,选择 证书库中的证书 和这张证书,并打开 拒绝未知名称。
- 在它上面添加一个主机为
panel.example.com的 面板 路由,以及一个主机为sub.example.com并打开 在此发布链接 的 订阅 路由。 - 保存,打开
https://panel.example.com,如果不再需要旧地址,就从那里删除它。
拥有自己地址的代理商
在 panel.reseller.example.com 上添加一个 面板 路由,在 sub.reseller.example.com 上添加一个 订阅 路由,两者都 绑定到账户 该代理商,并使用它的品牌外观。代理商只能在那里登录,其客户的链接和页面都带有它的名称。
443 后面的插件
在 shop.example.com 上添加一个 其他程序 路由,把 代理到 设为该插件。如果同一监听器上的某个面板路由匹配所有主机,请把 shop.example.com 加入它的 排除主机。
经由 CDN
一个主机名可以放在 Cloudflare 或其他 CDN 之后,而其他主机名保持直连,即使在同一个监听器上也可以。CDN 像其他客户端一样连接面板,因此它需要一个监听器、一张证书,以及面板对它所转发地址的信任。
Cloudflare
- Cloudflare 会转发的端口。 它转发
443、2053、2083、2087、2096和8443上的 HTTPS,以及80、8080、8880、2052、2082、2086和2095上的 HTTP。在其中一个端口上添加监听器,或者用 Cloudflare 的源站规则(origin rule)把流量转到监听器的端口。 - Cloudflare 与面板之间的 TLS。 Cloudflare 的 Full(完全)模式可以配合面板自己的自签名证书使用。要使用 Full (strict)(完全(严格)),请创建一张 Cloudflare 源站证书,在 证书 中上传,并为监听器选中它。不要使用 Flexible(灵活):从 Cloudflare 到面板的流量会是纯 HTTP。
- 访问者的地址。 把 Cloudflare 公布的 IPv4 和 IPv6 地址段填入监听器的 受信任的代理。之后,面板会从
X-Forwarded-For中取得访问者的地址,用于登录保护、封禁和 允许的地址。直接访问同一监听器的访问者不受影响,因为他们的地址不属于 Cloudflare。 - DNS 记录。 只为该主机名打开代理。
- 链接。 当 Cloudflare 的端口与监听器的端口不同时,请设置路由的 公开地址,例如
https://sub.example.com,这样链接会基于它生成,不带端口。 - Cloudflare 中该主机的设置。
- 不要打开“缓存所有内容”(Cache Everything),也不要使用任何缓存所有路径的规则:订阅和面板的 API 每次都必须到达面板。
- 在订阅主机上保持机器人质询关闭:应用无法回答质询,获取会失败。
- WebSocket 必须保持开启(默认即开启);面板的实时视图使用它。
在 Cloudflare 免费套餐上,超过 100 MB 的上传会被拒绝,超过 100 秒的请求会被中断。请通过面板的直连地址恢复大型备份。
其他 CDN
满足以下条件的任何 CDN 都可以使用:
- 把 HTTP 或 HTTPS 转发到面板有监听器的端口;
- 发送原始主机名,并在 TLS 握手中使用同一名称;
- 把访问者的地址写入
X-Forwarded-For; - 公布它发起连接所用的地址,以便填入 受信任的代理;
- 可以设置为不缓存订阅和 API。
被锁在外面
如果某次更改让面板无法访问,而它又已经被确认,请在服务器命令行用 nx-panel ingress reset 恢复地址,它只留下一个在每个主机上提供面板的普通监听器。参见 命令行。
