Skip to content
This repository has been archived by the owner on Oct 23, 2023. It is now read-only.

如何配置监听IP使插件对外可以访问 #42

Open
shoucandanghehe opened this issue Feb 16, 2022 · 11 comments
Open

如何配置监听IP使插件对外可以访问 #42

shoucandanghehe opened this issue Feb 16, 2022 · 11 comments
Labels
question Further information is requested

Comments

@shoucandanghehe
Copy link
Contributor

在服务器上部署时较难访问到127.0.0.1
可以添加一个可选配置 让用户能自定义后端监听IP

@mnixry
Copy link
Owner

mnixry commented Feb 16, 2022

监听IP选项是由NoneBot所控制的, 请参考文档进行修改

@mnixry mnixry added the invalid This doesn't seem right label Feb 16, 2022
@shoucandanghehe
Copy link
Contributor Author

明白了
还有两个问题

本项目是直接用nonebot2的ReversedDriver实现web服务的吗
如果公网直接暴露端口会不会有安全性问题,毕竟没有ssl加密之类

@mnixry mnixry added question Further information is requested and removed invalid This doesn't seem right labels Feb 17, 2022
@mnixry
Copy link
Owner

mnixry commented Feb 17, 2022

本项目是直接用nonebot2的ReversedDriver实现web服务的吗

是, 具体来讲是基于NoneBot默认使用的FastAPI, 理论上有可能兼容其他ReverseDriver, 但是我不会

如果公网直接暴露端口会不会有安全性问题,毕竟没有ssl加密之类

有, 我的建议是为uvicorn配置HTTPS或者使用其他Web服务器(比如Caddy或者Nginx)进行反向代理

而且安全性问题不止SSL加密, 因为你在事实上也同时暴露了OneBot反向ws监听的接口, 所以你最好配置access_token, 或者只对外开放plugin-gocqhttp提供的接口(即/go-cqhttp路径下暴露的内容), 并配置WEBUI_PASSWORD等项目

P.S. 根据 #124 ,似乎uvicorn的HTTP/1.1在长时间连接的情况下性能会比较差,所以这也是推荐使用反代的一个理由

@mnixry mnixry changed the title [功能请求] 添加监听IP的配置选项 如何配置监听IP使插件对外可以访问 Feb 17, 2022
@mnixry mnixry mentioned this issue May 24, 2022
@yhzcake
Copy link

yhzcake commented Jan 16, 2023

为了让本地其他设备可以访问127.0.0.1:8080/go-cqhttp用了nginx反代,连接状态显示断开,无法自动接收消息,需要手动点击刷新,请问有什么解决办法吗

@mnixry
Copy link
Owner

mnixry commented Jan 16, 2023

为了让本地其他设备可以访问127.0.0.1:8080/go-cqhttp用了nginx反代,连接状态显示断开,无法自动接收消息,需要手动点击刷新,请问有什么解决办法吗

传输实时日志使用的是WebSocket, Nginx需要额外的配置项来进行支持

@Well2333
Copy link
Contributor

Well2333 commented Mar 8, 2023

为了让本地其他设备可以访问127.0.0.1:8080/go-cqhttp用了nginx反代,连接状态显示断开,无法自动接收消息,需要手动点击刷新,请问有什么解决办法吗

可以参考我的配置方法

location /<path_to_your_bot>/ {
        proxy_pass http://127.0.0.1:<port>/go-cqhttp/;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
}

@yhzcake
Copy link

yhzcake commented Mar 31, 2023

为了让本地其他设备可以访问127.0.0.1:8080/go-cqhttp用了nginx反代,连接状态显示断开,无法自动接收消息,需要手动点击刷新,请问有什么解决办法吗

可以参考我的配置方法

location /<path_to_your_bot>/ {
        proxy_pass http://127.0.0.1:<port>/go-cqhttp/;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
}

请问location后面填的是本地路径还是网络路径?

@Well2333
Copy link
Contributor

是网络路径。

例如,你的bot绑定的端口是 11451, 然后希望用 https:///1919810/bot/ 这个地址访问bot的webui, 那么你可以这样填写

location /1919810/bot/ {
        proxy_pass http://127.0.0.1:11451/go-cqhttp/;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
}

这个配置本质上只是对请求进行了转发,并不会涉及到任何本地路径,就算你的bot不在这台服务器上,只要网络地址通畅依旧是可以访问的。

@yhzcake
Copy link

yhzcake commented Mar 31, 2023

也就是说如果我想使用0.0.0.0:8000/go-cqhttp/访问这个网址只要填location /go-cqhttp/{...}就可以对吧

@mnixry mnixry pinned this issue Mar 31, 2023
@symbolworld
Copy link

为了让本地其他设备可以访问127.0.0.1:8080/go-cqhttp用了nginx反代,连接状态显示断开,无法自动接收消息,需要手动点击刷新,请问有什么解决办法吗

我用的XShell这款软件的隧道功能,也能访问服务器上的本地。设置本地的侦听端口和目标主机的IP和端口,通过XShell连接上服务器后,就可以在本地访问目标主机的本地了。假设本地的侦听端口和服务器的端口都是12345,在本地输入:127.0.0.1:12345/go-cqhttp/就可以访问了。

@Well2333
Copy link
Contributor

Well2333 commented Jun 7, 2023

为了让本地其他设备可以访问127.0.0.1:8080/go-cqhttp用了nginx反代,连接状态显示断开,无法自动接收消息,需要手动点击刷新,请问有什么解决办法吗

我用的XShell这款软件的隧道功能,也能访问服务器上的本地。设置本地的侦听端口和目标主机的IP和端口,通过XShell连接上服务器后,就可以在本地访问目标主机的本地了。假设本地的侦听端口和服务器的端口都是12345,在本地输入:127.0.0.1:12345/go-cqhttp/就可以访问了。

这并不是什么 xshell 的隧道功能,是 ssh 的隧道功能,你在任何有完整功能的 ssh 客户端和服务端间理论上都能完成此操作,只不过你需要首先创建隧道才能访问,某种程度上也是挺麻烦的

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants