MCSManager
MCSManager copied to clipboard
使用HTTPS进行Daemon连接时,使用公网域名正常连接,使用localhost连接失败
运行环境:
Ubuntu live server 22.04.3 面板版本:9.9.0 Daemon版本 3.4.0
问题描述:
使用nginx配置完成反向代理,对Web和Daemon均配置SSL,使用Edge访问https://192.168.x.x:24444(Daemon)返回正常,Web端https访问正常,在节点管理中,使用wss://xxxxx.xxx(公网域名):24444可以正常连接,使用wss://localhost:24444无法正常访问,是否有相同问题提交,如果有请告知我并关闭该问题,我没有在已知问题中寻找到相关问题,目前仅了解到通过文档发现必须使用公网,但是在同一台机器内是否可以不适用公网进行Daemon访问呢?
Nginx反向代理配置
/etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_certificate /home/ubuntu/ssl/xxx.pem;
ssl_certificate_key /home/ubuntu/ssl/xxx.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
/etc/nginx/sites-enabled/mcsm
server {
# Web 端公网访问端口
listen 23333 ssl;
location / {
# Web 端反向代理目标
proxy_pass http://localhost:2333/;
root html;
index index.html index.htm;
proxy_set_header Host localhost;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
# 必须的 Websocket 支持
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
expires -1;
}
error_page 497 https://$http_host$request_uri;
}
server {
# Daemon 端公网访问端口
listen 24444 ssl;
location / {
# Daemon 端反向代理目标(配置与 Web 端处同理)
proxy_pass http://localhost:2444/;
root html;
index index.html index.htm;
proxy_set_header Host localhost;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
# 必须的 Websocket 支持
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
expires -1;
}
}
相关信息已截图
- 试试 127.0.0.1
- 检查内网回环
- 试试 127.0.0.1
- 检查内网回环
这是使用127.0.0.1的结果,检查内网回环具体是什么意思呢?
在本机中进行测试,使用curl https://127.0.0.1:24444 -k 得到正确的结果,其中-k选项为不验证SSL证书,是否是因为证书问题导致的呢?MCSM是否有设置不验证证书选项?
在9.9.0版本中,已经做出不验证证书设置,但是似乎并没有生效?这是一个BUG?我不确定 https://github.com/MCSManager/MCSManager/commit/b8050b62f0de9aee39476dc3a30da184fec808a5 https://github.com/MCSManager/MCSManager/blob/5aed7fb33d790cf7f81324a3514256bfe291825f/src/app/entity/entity_interface.ts#L57
已和对方在QQ群进一步了解。
目前认为应该是他说指出的代码处配置不生效,导致socket.io库依然在校验证书配置,所以他只要是和证书对不上的ip等方式均无法正常连接。
后续将尝试解决此问题。谢谢你的反馈。
如果证书不对那公网IP也不应该可以。除非你的意思是走公网域名。
另外,如果要127.0.0.1为什么还要https呢。你还不如开两个连接分别为内网http和公网https。
如果证书不对那公网IP也不应该可以。除非你的意思是走公网域名。
xxxxxx.xxx指的是公网域名,描述有点歧义
另外,如果要127.0.0.1为什么还要https呢。你还不如开两个连接,分别为内网http和公网https。
开两个连接不是需要启动两个面板吗,有点冗余了感觉
没啊,一个面板就够。我就是这样子做的。
如果内网和外网的端口一致、前端后端的域名。那么web可以通过localhost连接daemon。用户使用浏览器连接上反代的地址时,会自动使用同域名的该端口连接。
即在前端使用localhost连接后端时,浏览器会通过[前端域名]:[前端连接后端时的端口]来连接后端。否则,浏览器会使用前端连接后端时的[后端域名]:[前端连接后端时的端口]来连接。
如果内网和外网的端口一致、前端后端的域名。那么web可以通过localhost连接daemon。用户使用浏览器连接上反代的地址时,会自动使用同域名的该端口连接。 即在前端使用localhost连接后端时,浏览器会通过来连接后端。否则,浏览器会使用前端连接后端时的来连接。
[前端域名]:[前端连接后端时的端口]``[后端域名]:[前端连接后端时的端口]
我不理解你的意思,首先nginx无法MCSM端口和监听端口一致,nginx需要2个端口来进行反向代理,在这个情况中,若在面板填写localhost 端口填写2444,此端口为未经过nginx的端口,为Daemon的真实服务端口,那么面板可以与该节点进行连接,如图
但是即使能够连接节点,却没法使用控制台功能,如图
因为Daemon并不支持在自身设置成https协议,需要使用如nginx的反代工具设置https,那么无法通过使用2444端口进行wss协议连接,根据下图可知此处连接所使用的连接为
wss://公网域名:2444
你的这种方式固然没问题,但似乎并没有考虑到http和https之间的区别和互通关系,如果有其他方法可以将Daemon的这个原始端口启用https而不是通过nginx反代工具启用那么似乎可以解决这个问题,但在目前看来,在9.9.0版本中提到的添加忽略SSL证书验证并没有生效,若该功能正常生效,那么在面板中输入wss://localhost 端口 24444理论可以正常连接,关于提到的只使用localhost不添加wss协议,根据源代码 https://github.com/MCSManager/MCSManager/blob/5aed7fb33d790cf7f81324a3514256bfe291825f/src/app/entity/remote_service.ts#L28 可知,若在填写地址时不填写协议,则默认使用ws协议,而在Web端,若Web已启用https协议,那么进行控制台连接则使用wss协议,或许此处可以进行修改?根据Daemon端的连接进行选择协议,但根据https中不允许使用http不知是否可行。
没啊,一个面板就够。我就是这样子做的。
这个确实可以做到,在Web端使用http协议连接不经过反代可以使用不经过反代的Daemon地址进行连接,但这是仅在局域网环境下可以这样使用,我的目的主要是Web端使用https,Daemon也要使用https即使在局域网下,那么这样似乎就没办法正常使用
如果内网和外网的端口一致、前端后端的域名。那么web可以通过localhost连接daemon。用户使用浏览器连接上反代的地址时,会自动使用同域名的该端口连接。 即在前端使用localhost连接后端时,浏览器会通过来连接后端。否则,浏览器会使用前端连接后端时的来连接。
[前端域名]:[前端连接后端时的端口][后端域名]:[前端连接后端时的端口] ``我不理解你的意思,首先nginx无法MCSM端口和监听端口一致,nginx需要2个端口来进行反向代理,在这个情况中,若在面板填写localhost 端口填写2444,此端口为未经过nginx的端口,为Daemon的真实服务端口,那么面板可以与该节点进行连接,如图
但是即使能够连接节点,却没法使用控制台功能,如图
因为Daemon并不支持在自身设置成https协议,需要使用如nginx的反代工具设置https,那么无法通过使用2444端口进行wss协议连接,根据下图可知此处连接所使用的连接为
wss://公网域名:2444你的这种方式固然没问题,但似乎并没有考虑到http和https之间的区别和互通关系,如果有其他方法可以将Daemon的这个原始端口启用https而不是通过nginx反代工具启用那么似乎可以解决这个问题,但在目前看来,在9.9.0版本中提到的添加忽略SSL证书验证并没有生效,若该功能正常生效,那么在面板中输入wss://localhost 端口 24444理论可以正常连接,关于提到的只使用localhost不添加wss协议,根据源代码
https://github.com/MCSManager/MCSManager/blob/5aed7fb33d790cf7f81324a3514256bfe291825f/src/app/entity/remote_service.ts#L28
可知,若在填写地址时不填写协议,则默认使用ws协议,而在Web端,若Web已启用https协议,那么进行控制台连接则使用wss协议,或许此处可以进行修改?根据Daemon端的连接进行选择协议,但根据https中不允许使用http不知是否可行。
需要的是端口号一致……
如果内网和外网的端口一致、前端后端的域名。那么web可以通过localhost连接daemon。用户使用浏览器连接上反代的地址时,会自动使用同域名的该端口连接。 即在前端使用localhost连接后端时,浏览器会通过来连接后端。否则,浏览器会使用前端连接后端时的来连接。
[前端域名]:[前端连接后端时的端口][后端域名]:[前端连接后端时的端口] ``我不理解你的意思,首先nginx无法MCSM端口和监听端口一致,nginx需要2个端口来进行反向代理,在这个情况中,若在面板填写localhost 端口填写2444,此端口为未经过nginx的端口,为Daemon的真实服务端口,那么面板可以与该节点进行连接,如图
但是即使能够连接节点,却没法使用控制台功能,如图
因为Daemon并不支持在自身设置成https协议,需要使用如nginx的反代工具设置https,那么无法通过使用2444端口进行wss协议连接,根据下图可知此处连接所使用的连接为
wss://公网域名:2444你的这种方式固然没问题,但似乎并没有考虑到http和https之间的区别和互通关系,如果有其他方法可以将Daemon的这个原始端口启用https而不是通过nginx反代工具启用那么似乎可以解决这个问题,但在目前看来,在9.9.0版本中提到的添加忽略SSL证书验证并没有生效,若该功能正常生效,那么在面板中输入wss://localhost 端口 24444理论可以正常连接,关于提到的只使用localhost不添加wss协议,根据源代码 https://github.com/MCSManager/MCSManager/blob/5aed7fb33d790cf7f81324a3514256bfe291825f/src/app/entity/remote_service.ts#L28
可知,若在填写地址时不填写协议,则默认使用ws协议,而在Web端,若Web已启用https协议,那么进行控制台连接则使用wss协议,或许此处可以进行修改?根据Daemon端的连接进行选择协议,但根据https中不允许使用http不知是否可行。
需要的是端口号一致……
明确说明使用nginx无法做到端口号一致,你说的端口号一致是内外网端口,内外网端口一致只能通过http协议,要通过https协议要用nginx进行代理,nginx代理无法代理同一个端口,经过代理后的端口比如Daemon的端口为2444 nginx的监听端口为24444,外网转发的端口也是24444,这样是你说的内外网端口一致,但是根实际没经过代理的Daemon端口来比较还是不一致,如果要跟Daemon的实际端口一致是无法使用nginx进行代理的
如果内网和外网的端口一致、前端后端的域名。那么web可以通过localhost连接daemon。用户使用浏览器连接上反代的地址时,会自动使用同域名的该端口连接。 即在前端使用localhost连接后端时,浏览器会通过来连接后端。否则,浏览器会使用前端连接后端时的来连接。
[前端域名]:[前端连接后端时的端口][后端域名]:[前端连接后端时的端口] ``我不理解你的意思,首先nginx无法MCSM端口和监听端口一致,nginx需要2个端口来进行反向代理,在这个情况中,若在面板填写localhost 端口填写2444,此端口为未经过nginx的端口,为Daemon的真实服务端口,那么面板可以与该节点进行连接,如图
但是即使能够连接节点,却没法使用控制台功能,如图
因为Daemon并不支持在自身设置成https协议,需要使用如nginx的反代工具设置https,那么无法通过使用2444端口进行wss协议连接,根据下图可知此处连接所使用的连接为
wss://公网域名:2444你的这种方式固然没问题,但似乎并没有考虑到http和https之间的区别和互通关系,如果有其他方法可以将Daemon的这个原始端口启用https而不是通过nginx反代工具启用那么似乎可以解决这个问题,但在目前看来,在9.9.0版本中提到的添加忽略SSL证书验证并没有生效,若该功能正常生效,那么在面板中输入wss://localhost 端口 24444理论可以正常连接,关于提到的只使用localhost不添加wss协议,根据源代码 https://github.com/MCSManager/MCSManager/blob/5aed7fb33d790cf7f81324a3514256bfe291825f/src/app/entity/remote_service.ts#L28
可知,若在填写地址时不填写协议,则默认使用ws协议,而在Web端,若Web已启用https协议,那么进行控制台连接则使用wss协议,或许此处可以进行修改?根据Daemon端的连接进行选择协议,但根据https中不允许使用http不知是否可行。
需要的是端口号一致……
明确说明使用nginx无法做到端口号一致,你说的端口号一致是内外网端口,内外网端口一致只能通过http协议,要通过https协议要用nginx进行代理,nginx代理无法代理同一个端口,经过代理后的端口比如Daemon的端口为2444 nginx的监听端口为24444,外网转发的端口也是24444,这样是你说的内外网端口一致,但是根实际没经过代理的Daemon端口来比较还是不一致,如果要跟Daemon的实际端口一致是无法使用nginx进行代理的
如果端口号不能一致,就必须填外网地址和端口号。现在的web端不能设置后端在两种连接时使用不同的端口号。
如果内网和外网的端口一致、前端后端的域名。那么web可以通过localhost连接daemon。用户使用浏览器连接上反代的地址时,会自动使用同域名的该端口连接。 即在前端使用localhost连接后端时,浏览器会通过来连接后端。否则,浏览器会使用前端连接后端时的来连接。
[前端域名]:[前端连接后端时的端口][后端域名]:[前端连接后端时的端口] ``我不理解你的意思,首先nginx无法MCSM端口和监听端口一致,nginx需要2个端口来进行反向代理,在这个情况中,若在面板填写localhost 端口填写2444,此端口为未经过nginx的端口,为Daemon的真实服务端口,那么面板可以与该节点进行连接,如图
但是即使能够连接节点,却没法使用控制台功能,如图
因为Daemon并不支持在自身设置成https协议,需要使用如nginx的反代工具设置https,那么无法通过使用2444端口进行wss协议连接,根据下图可知此处连接所使用的连接为
wss://公网域名:2444你的这种方式固然没问题,但似乎并没有考虑到http和https之间的区别和互通关系,如果有其他方法可以将Daemon的这个原始端口启用https而不是通过nginx反代工具启用那么似乎可以解决这个问题,但在目前看来,在9.9.0版本中提到的添加忽略SSL证书验证并没有生效,若该功能正常生效,那么在面板中输入wss://localhost 端口 24444理论可以正常连接,关于提到的只使用localhost不添加wss协议,根据源代码 https://github.com/MCSManager/MCSManager/blob/5aed7fb33d790cf7f81324a3514256bfe291825f/src/app/entity/remote_service.ts#L28
可知,若在填写地址时不填写协议,则默认使用ws协议,而在Web端,若Web已启用https协议,那么进行控制台连接则使用wss协议,或许此处可以进行修改?根据Daemon端的连接进行选择协议,但根据https中不允许使用http不知是否可行。
需要的是端口号一致……
明确说明使用nginx无法做到端口号一致,你说的端口号一致是内外网端口,内外网端口一致只能通过http协议,要通过https协议要用nginx进行代理,nginx代理无法代理同一个端口,经过代理后的端口比如Daemon的端口为2444 nginx的监听端口为24444,外网转发的端口也是24444,这样是你说的内外网端口一致,但是根实际没经过代理的Daemon端口来比较还是不一致,如果要跟Daemon的实际端口一致是无法使用nginx进行代理的
如果端口号不能一致,就必须填外网地址和端口号。现在的web端不能设置后端在两种连接时使用不同的端口号。
启用https协议如何做到端口号一致?或者用什么工具可以做到?
你可以试试开看,将daemon进程的监听地址改成回环地址,Nginx改成监听外网IP。这样,端口号就可以同时设置为2444,web走回环连daemon,浏览器走外网Nginx反代连2444。 理论可行,没测试过。
发件人: Yamada993 @.> 发送时间: 2023年12月11日 2:23 收件人: MCSManager/MCSManager @.> 抄送: huangsijun17 @.>; Comment @.> 主题: Re: [MCSManager/MCSManager] 使用HTTPS进行Daemon连接时,使用公网域名正常连接,使用localhost连接失败 (Issue #1085)
如果内网和外网的端口一致、前端后端的域名。那么web可以通过localhost连接daemon。用户使用浏览器连接上反代的地址时,会自动使用同域名的该端口连接。 即在前端使用localhost连接后端时,浏览器会通过来连接后端。否则,浏览器会使用前端连接后端时的来连接。 [前端域名]:[前端连接后端时的端口][后端域名]:[前端连接后端时的端口] ``
我不理解你的意思,首先nginx无法MCSM端口和监听端口一致,nginx需要2个端口来进行反向代理,在这个情况中,若在面板填写localhost 端口填写2444,此端口为未经过nginx的端口,为Daemon的真实服务端口,那么面板可以与该节点进行连接,如图 [image] https://private-user-images.githubusercontent.com/93665364/289070903-b32841a1-46df-4dad-8656-9cda37b62241.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDIwNTM4NzgsIm5iZiI6MTcwMjA1MzU3OCwicGF0aCI6Ii85MzY2NTM2NC8yODkwNzA5MDMtYjMyODQxYTEtNDZkZi00ZGFkLTg2NTYtOWNkYTM3YjYyMjQxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA4VDE2MzkzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZiYzNjY2I2ZjgxYmNmNjRmYzBhY2MxMTYxYjU4ODc2NmU3ZDZmZTNjOTk1ZTEyOTM4MzdlNDliMWFhOTc0NTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.6tnbVSBZbKKaEIDhqNw7yzZZCKyFFYeQEqlCd2iULc8 但是即使能够连接节点,却没法使用控制台功能,如图 [image] https://private-user-images.githubusercontent.com/93665364/289071243-1cf51bf0-a8ed-495d-bc8a-84c50b0012b5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDIwNTM4NzgsIm5iZiI6MTcwMjA1MzU3OCwicGF0aCI6Ii85MzY2NTM2NC8yODkwNzEyNDMtMWNmNTFiZjAtYThlZC00OTVkLWJjOGEtODRjNTBiMDAxMmI1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA4VDE2MzkzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ0MDU4YjY1ZWFiZjI3YTMwNzI4OGE0YzRkMzBhZjAxZmU2NWY0MjZkMGEyYjA3NjIwNmYyMTcwZjBjMDc5ZDMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.OW8EZCpJPsTlTUSAQL6E2y7Dh7cj3TZurekB2qmdKM8 因为Daemon并不支持在自身设置成https协议,需要使用如nginx的反代工具设置https,那么无法通过使用2444端口进行wss协议连接,根据下图可知此处连接所使用的连接为wss://公网域名:2444 [d831823c2ec8484eaaf4b5e425eda9eb] https://private-user-images.githubusercontent.com/93665364/289071842-de4ae15f-3950-4ae9-b93b-afb88a92d349.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDIwNTM4NzgsIm5iZiI6MTcwMjA1MzU3OCwicGF0aCI6Ii85MzY2NTM2NC8yODkwNzE4NDItZGU0YWUxNWYtMzk1MC00YWU5LWI5M2ItYWZiODhhOTJkMzQ5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA4VDE2MzkzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY0NDQwZjkyZmYxYzA2MDUzNzljYzg5NTI0MWY4YjRmY2IxNzFhMjUxM2E4MjY0ODM1ZjU3OGFkM2I1NWM4MDgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.LNed7V2oCpxf4r4YLy6nyz88n8YanLWPUppW926FV2o 你的这种方式固然没问题,但似乎并没有考虑到http和https之间的区别和互通关系,如果有其他方法可以将Daemon的这个原始端口启用https而不是通过nginx反代工具启用那么似乎可以解决这个问题,但在目前看来,在9.9.0版本中提到的添加忽略SSL证书验证并没有生效,若该功能正常生效,那么在面板中输入wss://localhost 端口 24444理论可以正常连接,关于提到的只使用localhost不添加wss协议,根据源代码 https://github.com/MCSManager/MCSManager/blob/5aed7fb33d790cf7f81324a3514256bfe291825f/src/app/entity/remote_service.ts#L28
可知,若在填写地址时不填写协议,则默认使用ws协议,而在Web端,若Web已启用https协议,那么进行控制台连接则使用wss协议,或许此处可以进行修改?根据Daemon端的连接进行选择协议,但根据https中不允许使用http不知是否可行。
需要的是端口号一致……
明确说明使用nginx无法做到端口号一致,你说的端口号一致是内外网端口,内外网端口一致只能通过http协议,要通过https协议要用nginx进行代理,nginx代理无法代理同一个端口,经过代理后的端口比如Daemon的端口为2444 nginx的监听端口为24444,外网转发的端口也是24444,这样是你说的内外网端口一致,但是根实际没经过代理的Daemon端口来比较还是不一致,如果要跟Daemon的实际端口一致是无法使用nginx进行代理的
如果端口号不能一致,就必须填外网地址和端口号。现在的web端不能设置后端在两种连接时使用不同的端口号。
启用https协议如何做到端口号一致?或者用什么工具可以做到?
― Reply to this email directly, view it on GitHubhttps://github.com/MCSManager/MCSManager/issues/1085#issuecomment-1849042028, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AHQLRU3ZBU3ETLDMRJWDOJ3YIX42VAVCNFSM6AAAAABAHKNDEGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNBZGA2DEMBSHA. You are receiving this because you commented.
你可以试试开看,将daemon进程的监听地址改成回环地址,Nginx改成监听外网IP。这样,端口号就可以同时设置为2444,web走回环连daemon,浏览器走外网Nginx反代连2444。 理论可行,没测试过。 ... ________________________________ 发件人: Yamada993 @.> 发送时间: 2023年12月11日 2:23 收件人: MCSManager/MCSManager @.> 抄送: huangsijun17 @.>; Comment @.> 主题: Re: [MCSManager/MCSManager] 使用HTTPS进行Daemon连接时,使用公网域名正常连接,使用localhost连接失败 (Issue #1085) 如果内网和外网的端口一致、前端后端的域名。那么web可以通过localhost连接daemon。用户使用浏览器连接上反代的地址时,会自动使用同域名的该端口连接。 即在前端使用localhost连接后端时,浏览器会通过来连接后端。否则,浏览器会使用前端连接后端时的来连接。 [前端域名]:[前端连接后端时的端口][后端域名]:[前端连接后端时的端口] `` 我不理解你的意思,首先nginx无法MCSM端口和监听端口一致,nginx需要2个端口来进行反向代理,在这个情况中,若在面板填写localhost 端口填写2444,此端口为未经过nginx的端口,为Daemon的真实服务端口,那么面板可以与该节点进行连接,如图 [image] https://private-user-images.githubusercontent.com/93665364/289070903-b32841a1-46df-4dad-8656-9cda37b62241.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDIwNTM4NzgsIm5iZiI6MTcwMjA1MzU3OCwicGF0aCI6Ii85MzY2NTM2NC8yODkwNzA5MDMtYjMyODQxYTEtNDZkZi00ZGFkLTg2NTYtOWNkYTM3YjYyMjQxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA4VDE2MzkzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZiYzNjY2I2ZjgxYmNmNjRmYzBhY2MxMTYxYjU4ODc2NmU3ZDZmZTNjOTk1ZTEyOTM4MzdlNDliMWFhOTc0NTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.6tnbVSBZbKKaEIDhqNw7yzZZCKyFFYeQEqlCd2iULc8 但是即使能够连接节点,却没法使用控制台功能,如图 [image] https://private-user-images.githubusercontent.com/93665364/289071243-1cf51bf0-a8ed-495d-bc8a-84c50b0012b5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDIwNTM4NzgsIm5iZiI6MTcwMjA1MzU3OCwicGF0aCI6Ii85MzY2NTM2NC8yODkwNzEyNDMtMWNmNTFiZjAtYThlZC00OTVkLWJjOGEtODRjNTBiMDAxMmI1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA4VDE2MzkzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ0MDU4YjY1ZWFiZjI3YTMwNzI4OGE0YzRkMzBhZjAxZmU2NWY0MjZkMGEyYjA3NjIwNmYyMTcwZjBjMDc5ZDMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.OW8EZCpJPsTlTUSAQL6E2y7Dh7cj3TZurekB2qmdKM8 因为Daemon并不支持在自身设置成https协议,需要使用如nginx的反代工具设置https,那么无法通过使用2444端口进行wss协议连接,根据下图可知此处连接所使用的连接为wss://公网域名:2444 [d831823c2ec8484eaaf4b5e425eda9eb] https://private-user-images.githubusercontent.com/93665364/289071842-de4ae15f-3950-4ae9-b93b-afb88a92d349.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDIwNTM4NzgsIm5iZiI6MTcwMjA1MzU3OCwicGF0aCI6Ii85MzY2NTM2NC8yODkwNzE4NDItZGU0YWUxNWYtMzk1MC00YWU5LWI5M2ItYWZiODhhOTJkMzQ5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjA4VDE2MzkzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY0NDQwZjkyZmYxYzA2MDUzNzljYzg5NTI0MWY4YjRmY2IxNzFhMjUxM2E4MjY0ODM1ZjU3OGFkM2I1NWM4MDgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.LNed7V2oCpxf4r4YLy6nyz88n8YanLWPUppW926FV2o 你的这种方式固然没问题,但似乎并没有考虑到http和https之间的区别和互通关系,如果有其他方法可以将Daemon的这个原始端口启用https而不是通过nginx反代工具启用那么似乎可以解决这个问题,但在目前看来,在9.9.0版本中提到的添加忽略SSL证书验证并没有生效,若该功能正常生效,那么在面板中输入wss://localhost 端口 24444理论可以正常连接,关于提到的只使用localhost不添加wss协议,根据源代码 https://github.com/MCSManager/MCSManager/blob/5aed7fb33d790cf7f81324a3514256bfe291825f/src/app/entity/remote_service.ts#L28 可知,若在填写地址时不填写协议,则默认使用ws协议,而在Web端,若Web已启用https协议,那么进行控制台连接则使用wss协议,或许此处可以进行修改?根据Daemon端的连接进行选择协议,但根据https中不允许使用http不知是否可行。 需要的是端口号一致…… 明确说明使用nginx无法做到端口号一致,你说的端口号一致是内外网端口,内外网端口一致只能通过http协议,要通过https协议要用nginx进行代理,nginx代理无法代理同一个端口,经过代理后的端口比如Daemon的端口为2444 nginx的监听端口为24444,外网转发的端口也是24444,这样是你说的内外网端口一致,但是根实际没经过代理的Daemon端口来比较还是不一致,如果要跟Daemon的实际端口一致是无法使用nginx进行代理的 如果端口号不能一致,就必须填外网地址和端口号。现在的web端不能设置后端在两种连接时使用不同的端口号。 启用https协议如何做到端口号一致?或者用什么工具可以做到? ― Reply to this email directly, view it on GitHub<#1085 (comment)>, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AHQLRU3ZBU3ETLDMRJWDOJ3YIX42VAVCNFSM6AAAAABAHKNDEGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNBZGA2DEMBSHA. You are receiving this because you commented.
这样理论看起来好像可以,但是对这个跳过证书验证来说似乎这样做之后在连接时使用的是http协议并没有使用https,这个证书验证跳过可能是在其他环节可以进行的,在连接的时候是不行的
试试这个 https://github.com/bddjr/nginx-proxy-docs-for-mcsm/blob/master/配置HTTPS反向代理.md
但是即使能够连接节点,却没法使用控制台功能,如图
因为Daemon并不支持在自身设置成https协议,需要使用如nginx的反代工具设置https,那么无法通过使用2444端口进行wss协议连接,根据下图可知此处连接所使用的连接为