环境信息
面板
- MCSManager 4.13.0
- 使用官方 Linux 安装脚本部署
反向代理
- 1panel 默认的 OpenResty
实例域名
mcsm.example.com
Daemon 默认端口
24444
HTTPS/WSS 反代端口
24443
问题现象
MCSManager 面板正常访问。但是:
- 实例控制台打不开
- 文件上传失败
- 文件下载失败
- 节点显示:
网页直连:异常
错误信息:
无法连接到远程节点
浏览器无法连接到地址:
wss://mcsm.example.com:24444
xhr poll error
原因分析
MCSManager 在 HTTPS 页面下,浏览器必须通过 WSS:// 连接 daemon。如果 daemon 仍然是 ws:// 或 http://,浏览器会因为 Mixed Content 安全策略直接拒绝连接。
因此:必须给 daemon 单独配置 HTTPS + WebSocket 反向代理。
OpenResty Docker 挂载目录
1Panel OpenResty 容器挂载:
宿主机: /opt/1panel/www/conf.d
容器内: /usr/local/openresty/nginx/conf/conf.d
只需要在宿主机 /opt/1panel/www/conf.d 创建配置文件即可。
前提:记得提前在 1Panel 中为域名
mcsm.example.com申请 SSL 证书,这里不做详细说明。
创建 daemon HTTPS 配置
创建 /opt/1panel/www/conf.d/mcsm-daemon.conf:
server {
listen 24443 ssl;
listen [::]:24443 ssl;
http2 on;
server_name mcsm.example.com;
ssl_certificate /www/sites/mcsm.example.com/ssl/fullchain.pem;
ssl_certificate_key /www/sites/mcsm.example.com/ssl/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://127.0.0.1:24444;
proxy_http_version 1.1;
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_buffering off;
proxy_request_buffering off;
client_max_body_size 0;
}
}
特别注意:不要写 \$
错误写法:
proxy_set_header Upgrade \$http_upgrade;
正确写法:
proxy_set_header Upgrade $http_upgrade;
原因是如果你使用了单引号 heredoc(<<'EOF'),Shell 不会展开变量,因此不需要额外转义 $。否则 nginx 会把 \$http_upgrade 当作普通字符串,最终 WebSocket Upgrade Header 失效。
测试配置
检查 nginx 配置
sudo docker exec 1Panel-openresty-TlM5 openresty -t
成功输出:
syntax is ok
test is successful
重载 OpenResty
sudo docker exec 1Panel-openresty-TlM5 openresty -s reload
测试 daemon 是否可访问
宿主机:
curl http://127.0.0.1:24444
Docker 容器内部:
sudo docker exec -it 1Panel-openresty-TlM5 curl http://127.0.0.1:24444
都应返回:
MCSManager Daemon is Running
检查 docker bridge IP
ip addr show docker0
输出:
inet 127.0.0.1/16
因此 proxy_pass http://127.0.0.1:24444; 是正确的。
检查监听端口
sudo ss -tlnp | grep 24443
应看到:
0.0.0.0:24443
浏览器测试
打开 https://mcsm.example.com:24443,如果成功会显示:
MCSManager Daemon 程序运行中
MCSManager 节点配置
进入:管理面板 → 节点 → 编辑节点
远程节点 IP 地址
填写:
wss://mcsm.example.com
注意:
- 必须写
wss:// - 不要写端口
远程节点端口
填写:
24443
配置完成后点击 更新节点,再 重新连接。
最终效果
节点状态:
节点状态:在线
网页直连:正常
以下功能恢复:
- 控制台
- 文件上传
- 文件下载
- WebSocket
- 实例终端
常见坑总结
1. Docker 内无法访问宿主机
检查 curl http://127.0.0.1:24444 是否可达。
2. 忘记 WebSocket Headers
必须设置:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
3. $ 被错误转义
不要写 \$http_upgrade。
4. 节点 IP 写错
不要写 mcsm.example.com:24443,正确格式是 wss://mcsm.example.com,端口单独填写。
5. HTTPS 页面连接 HTTP WebSocket
浏览器会直接拒绝(Mixed Content),因此必须使用 WSS://。
最终网络结构
Browser
↓ HTTPS/WSS
OpenResty :24443
↓ HTTP/WS
MCSManager Daemon :24444