Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nohost对接本地的whistle后,当去除接入规则后,whistle的自有规则受到影响 #196

Open
lfire opened this issue Apr 26, 2023 · 6 comments

Comments

@lfire
Copy link

lfire commented Apr 26, 2023

nohost的接入方式是参考:https://nohost.pro/docs/developer/usage
@http://{nohost ip|domain}:8080/whistle.nohost/cgi-bin/plugin-rules

在我的示例中,目前猜测是受如下规则的影响:
*/.whistle-path.5b6af7b9884e1165/ ignore://-proxy|-host reqHeaders://whistleInternalHost=local.whistlejs.com enable://proxyTunnel

其在nohost端的作用,本身是为了注入小原点设计的。
但当我把本地的接入规则注释后,即
# @http://{nohost ip|domain}:8080/whistle.nohost/cgi-bin/plugin-rules

再额外配置一条规则时,如下图:
image

第7行的规则,
/.*\/whistle\.nohost\/cgi-bin\/list(.*)/i https://proxy.xxx.xxx.com:444/whistle/plugin.nohost/cgi-bin/list$1 resCors://*
其目的是希望自己实现一个小圆点的注入,这样就能支持localhost或是其他任意域名下的小圆点注入,访问链接如:

http://localhost:15000/.whistle-path.5b6af7b9884e1165/whistle.nohost/cgi-bin/list?_=1682495486094

而当我访问上续链接时,会发现一直不能代理成功,返回 404,而当我稍微修改一下链接中的5b6af7b9884e1165,修改为:5b6af709884e1165,发现则可以正常访问,并代理成功,如下图:

image

目前我尝试过全系统查找带有5b6af7b9884e1165字符的文件,我猜测是否是规则缓存导致,但我没能找到,现在不知道具体的原因,只是高度怀疑是上面提到的那个注入规则影响了whistle的代理能力。

求大佬解答

@avwo
Copy link
Collaborator

avwo commented Apr 26, 2023

根目录为 /.whistle-path.5b6af7b9884e1165/ 的 url 为 whistle 的内部请求,只能匹配 proxy 等一些特殊规则

@lfire
Copy link
Author

lfire commented Apr 26, 2023

@avwo 我所做的操作主要是第5行的规则注释了,也就代表,不再使用nohost的规则注入。
另外,我配置了一个第7行这样的规则,我理解是,这时候已经与nohost没有任何关系了。
我需要达成的目标是,这样的一个规则:/.*\/whistle\.nohost\/cgi-bin\/list(.*)/i,我在whistle中,能进行不同的指向配置,这里不一定就是指到我上面第7行的位置,可以是任意的一个想去的位置,如:https://www.qq.com
那第7行的规则就可以是:/.*\/whistle\.nohost\/cgi-bin\/list(.*)/i https://www.qq.com

这时候当我访问一个符合规则的链接时(在开启代理的情况下),如:http://localhost:15000/.whistle-path.5b6af709884e1165/whistle.nohost/cgi-bin/list?_=1682495486094
可以看到如下结果:
image

但问题在于,当我访问的链接是:http://localhost:15000/.whistle-path.5b6af7b9884e1165/whistle.nohost/cgi-bin/list?_=1682495486094 ,其中只是将af70=>af7b,替换了一个字母而已,得到的结果确是代理失败,如下:

image

这两个链接的对应的代理规则没有任何区别,怀疑的点只在于,5b6af7b9884e1165这个特殊的字符串,曾出现在nohost的注入规则中,(现在这个注入规则,第5行是注释掉的),这也是为什么我说,whistle的自有规则受到了nohost曾经的注入规则影响。
image

在我的理解中,第5行注释后,nohost的规则应该是不会再注入,也不会影响到whistle的正常使用。

@avwo
Copy link
Collaborator

avwo commented Apr 27, 2023

简单说下你要实现什么功能?

@lfire
Copy link
Author

lfire commented Apr 28, 2023

两个端:
nohost服务端 & whistle本地端,两个所在的网络不在一个局域网。
通过whistle配置,希望可以在以localhost的方式注入小圆点,这样可以实现环境切换。但因为nohost的入口规则并不支持这样的配置,因此希望可以通过whistle的本地化配置来实现nohost的自动规则注入能力。

问题是,我手工在whistle中配置这些规则时,发现nohost的注入规则,在注释移除后,好像还在生效,导致自己手动配置的whistle规则不生效。

@avwo
Copy link
Collaborator

avwo commented Apr 28, 2023

试试 * internal-proxy://host:port excludeFilter://*/.whistle-path.5b6af7b9884e1165/

@lfire
Copy link
Author

lfire commented Apr 28, 2023

试试 * internal-proxy://host:port excludeFilter://*/.whistle-path.5b6af7b9884e1165/

加上了这个配置,但依然是失败的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants