所有相关的文章都基于理论基础。如果直接按照文章里的方式操作是没问题的,但一些特殊场景不能完全按照文章里的操作,因此需要自行基于一些理论进行修改。
本文的“Web端”指Web后端,“浏览器”指前端。
本文不是MCSManager官方开发人员写的。
浏览器检查Daemon在线状态、获取Daemon的所有实例、管理Daemon的文件、修改Daemon的文件等绝大多数操作都会由Web端代理。
连接实例终端、直接下载或直接上传文件,对应以下路径开头
/socket.io/
/upload/
/download/
如果节点地址不填协议头,那么浏览器自动使用连接Web端时的协议(http对应ws,https对应wss)。
如果节点地址填了协议头,那么浏览器会使用填写的协议头。
如果节点地址去除协议头后,以 localhost
或 127.0.0.
开头,则浏览器会将域名替换成连接Web端时使用的域名。[参考mcsm9的前端相关源码]
例如以下场景
Web使用http://example.com:12333
,
Daemon填写域名 localhost
端口 12444
,
那么浏览器会使用 ws://example.com:12444
或 http://example.com:12444
连接Daemon。
Web使用https://example.com:12333
,
Daemon填写域名 localhost
端口 12444
,
那么浏览器会使用 wss://example.com:12444
或 https://example.com:12444
连接Daemon。
Web使用https://example.com:12333
,
Daemon填写域名 ws://localhost
端口 12444
,
那么浏览器会使用 ws://example.com:12444
或 http://example.com:12444
连接Daemon,
然后因为浏览器阻止https页面使用http请求资源,所以连接失败。
Web使用https://example.com:12333
,
Daemon填写域名 wss://mcsmdaemon.example.com
端口 12444
,
那么浏览器会使用 wss://mcsmdaemon.example.com:12444
或 https://mcsmdaemon.example.com:12444
连接Daemon。
Web端会通过 /socket.io/
路径的开头连接Daemon,代理大多数操作。
修改nginx配置的Daemon端localhost部分的location,然后重载nginx,然后让Web端重新连接Daemon端,会发现一切操作正常进行,验证了上述理论。
server {
# Daemon 端代理后localhost访问HTTP协议端口(可用多个listen监听多个端口)
# 开始反向代理
# 代理Daemon端
location /socket.io/ {
如果节点地址不填协议头,那么Web端自动使用ws协议。
如果节点地址填了协议头,那么Web端会使用填写的协议头。
例如以下场景
Daemon填写域名 localhost
端口 12444
,
那么Web端会使用 ws://localhost:12444
连接Daemon。
Daemon填写域名 ws://localhost
端口 12444
,
那么Web端会使用 ws://localhost:12444
连接Daemon。
Daemon填写域名 wss://mcsmdaemon.example.com
端口 12444
,
那么Web端会使用 wss://mcsmdaemon.example.com:12444
连接Daemon。
有错误的内容或改进的建议?或者没弄懂怎么配置?点此编辑并提交issue。
https://gitee.com/bddjr/nginx-proxy-docs-for-mcsm/blob/master/%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.md
https://github.com/bddjr/nginx-proxy-docs-for-mcsm/blob/master/%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.md
https://proxyformcsm.bddjr.com/%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html
源码仓库:nginx-proxy-docs-for-mcsm
Made by bddjr