启用 HTTPS
面板默认是明文 HTTP。生产环境请至少用下面两种方式之一加上 TLS:面板自身启用 HTTPS,或在前面放一层反向代理。
方式一:面板内置 HTTPS
在面板的插件设置中打开 SSL,并填写证书与私钥路径(对应 SystemConfig/config.json 的 ssl、sslPemPath、sslKeyPath):
{
"ssl": true,
"sslPemPath": "/etc/letsencrypt/live/example.com/fullchain.pem",
"sslKeyPath": "/etc/letsencrypt/live/example.com/privkey.pem"
}
保存后重启面板进程生效,然后访问 https://<host>:23333/。
节点(daemon/data/Config/global.json)也有同样的 ssl / sslPemPath / sslKeyPath 三件套,用于保护面板到节点的连接。内网可信时通常保持明文。
|
Warning
|
证书/私钥路径要能被运行进程读取;修改这类只在启动时读取的字段后需要重启,界面会提示。 |
方式二:反向代理
更常见的做法是把 TLS 交给 Nginx / Caddy 等,面板继续监听本地明文端口。
server {
listen 443 ssl;
server_name panel.example.com;
ssl_certificate /etc/letsencrypt/live/panel.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/panel.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:23333;
proxy_http_version 1.1;
# 必须放行 WebSocket 升级,否则终端与实时状态不可用
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
随代理在面板里打开反向代理模式,让面板从代理传来的头里取真实客户端 IP(reverseProxyMode 与 reverseProxyHeader,默认头为 X-Real-IP)。否则登录 IP 校验、限速、审计里的来源地址都会是代理的地址。
与其他服务共用端口
面板可以用 prefix 挂到一个子路径,例如 location /panel:
location /panel/ {
proxy_pass http://127.0.0.1:23333/panel/;
# ... 同上放行 WebSocket 与转发头
}
同时在面板设置里把 prefix 设为 /panel。前缀要先经过代理再去掉,或者全程保留,关键是面板与代理两侧一致。节点地址如果也带前缀,填节点时不要遗漏。
跨域
如果面板被别的站点以跨域方式调用,可打开 crossDomain。仅在同域前端(官方前端)下不需要它。
证书获取
证书可以来自 Let’s Encrypt(certbot)、云厂商托管证书或商业 CA。用反向代理时,续期脚本要能重载 Nginx;用内置 HTTPS 时,续期后需重启面板进程重新读取文件。
检查清单
-
https://<host>/能打开且证书有效; -
终端能连上、输出实时刷新(验证 WebSocket 已放行);
-
操作日志中记录的客户端 IP 是真实 IP,而非代理地址;
-
若用了
prefix,面板内的所有链接都不带双斜杠、不丢前缀。