Tencent / nohost

基于 Whistle 实现的多账号多环境远程配置及抓包调试平台
https://nohost.pro
Other
1.4k stars 160 forks source link

设置域名无法访问 nohost #78

Closed mingyec closed 2 years ago

mingyec commented 2 years ago

nohost version: nohost@0.8.5 我在服务器上跑一个 nohost,使用 IP 能成功访问 nohost。当我配置域名,使用域名访问却开始报错,信息如下:

avwo commented 2 years ago

要 Nohost 管理后台登记下域名 image

mingyec commented 2 years ago

已经这样配置了域名了=-=

avwo commented 2 years ago

看下域名有没有配正确

mingyec commented 2 years ago

域名是正确的,因为系统有做正则校验,我这里配的大概是这种:proxy-test.qq.com。 如果没有配置域名或者配置不对,应该是访问不到nohost/index.html页面的,现在的情况是能访问到index.html页面,但是无法访问相应的接口

avwo commented 2 years ago

浏览器抓包看下这个 302 是哪个服务返回的

mingyec commented 2 years ago

看了下,302 服务是 IP A 返回的,与 nohost 所在的 IP B 不是同一个 IP,我这边中间使用了一个 nginx 服务转发的,IP A 对应的是 Nginx 服务所在的地址。但我还是不能明白,为啥我 index.html 也是经过 Nginx 的转发,却能正常访问而不是 302 跳转;而我 nohost 里的接口请求,却是直接转发到 127.0.0.1 这个地址? 看了下 nohost 的源码,貌似服务请求默认就是走 127.0.0.1 这个 host 的,如果改成我 nohost 服务所在的 ip 可以行的通吗?

avwo commented 2 years ago

nginx 转发的时候要被 host 透传过来

mingyec commented 2 years ago

大佬,还是没能解决问题。经过排查,302服务是 nohost 本身抛出来的,而不是来源于 nginx image 现在可以确定的信息是,uiServer的接口请求到达了 passToWhistle 方法,经过了 proxyCtx 之后,可以看到我打印日志的地方,status code 是 302。这个应该能说明接口请求是到达了 uiServer 这一层的,但是后续转到 whistle 服务请求时就不知道为什么返回的是 302 了。

avwo commented 2 years ago

看下这个请求是不是 ui request,不是的话打印下 req.headers.hosthttps://github.com/Tencent/nohost/blob/master/lib/index.js#L92

mingyec commented 2 years ago

是 ui request image

avwo commented 2 years ago

加微信群 image

mingyec commented 2 years ago

加了,麻烦通过下验证:Nohost minyec

WzFFzW commented 2 years ago

已定位到原因:请求是用nginx转发过来的,带上了x-forward-host请求头,请求转发到whistle之后被识别成需要转发的请求,导致302跳转。

已解决:https://github.com/Tencent/nohost/pull/79

avwo commented 2 years ago

Nohost 更新下到 v0.8.6 版本试试

mingyec commented 2 years ago

wecom-temp-a59717fade01a0a46276923f9d0e6467 我看到解决方法是删除 x-forward-host 这个字段,这是否会有影响

avwo commented 2 years ago

只对 Nohost 的内部请求做这个删除操作,正常请求不影响

walkerliu01 commented 2 years ago

目前是通过域名访问nginx转到nohost

昨天升级到 v0.8.6以后, 直接访问域名也会出现上边的问题,会302重定向到127.0.0.1上去, 后来在 SwitchyOmega 里, 把不代理的地址列表 加上nohost域名之后才解决

avwo commented 2 years ago

nohost.zuopeng.io 是做什么的,这个服务跟 nohost 部署在一起吗?

walkerliu01 commented 2 years ago

这个就是我们内部用的一个nohsot域名

avwo commented 2 years ago

本地 whistle 配了什么规则,nohost.zuopeng.io 在管理后台设置了吗 image

walkerliu01 commented 2 years ago

设置了的, 没有用本地whistle 这里问题是如果把 nohost对应设置的域名 也走nohost代理的话会出现上边的情况, 需要单独设置nohost域名不走代理

老版本没有这个问题

avwo commented 2 years ago

是个 bug,已经修复,更新到 v0.9.0 版本试试

walkerliu01 commented 2 years ago

可以了!!