设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 79|回复: 4

kangle的url_write目录重写是否有bug?

[复制链接]

签到天数: 44 天

[LV.5]常住居民I

发表于 2025/1/12 02:02 | 显示全部楼层 |阅读模式 |Google Chrome 131.0.0.0|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
参考:https://bbs.itzmx.com/forum.php?mod=viewthread&tid=86574&fromuid=1
我希望将http、ws请求转发到另一个域名下的https和wss上
屏幕截图 2025-01-12 015924.png
这样设置以后,要不就是请求被转发到了http://a.com/speech/https%3A//b.com下,要不就是请求没有升级为ws,这两种里面随机选择一种发生
是我哪里理解有误吗?要实现这种带有路径重写的反代是否还有其他手段?
[发帖际遇]: 一个袋子砸在了 mbs654321 头上,mbs654321 赚了 4 樱币. 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

 成长值: 405

签到天数: 4760 天

[LV.Master]伴坛终老

发表于 2025/1/12 05:34 | 显示全部楼层 |Google Chrome 131.0.0.0|Windows 10
没有bug,从图上看你的规则写法有问题
看起来你是要把规则反转过来吗?用 a.com/imgs/ 输出b.com的数据,并且b为https?
  1. imgs/(.*)$
复制代码
  1. https://b.com/$1
复制代码


此时a.com的ws或者http都应该可以正常工作,你试一下

还有个简易版的rewrite重写模块,能够直接列举出path目录路径,可能更适合不太了解正则表达式写法的人群
https://bbs.itzmx.com/thread-98915-1-1.html
https://bbs.itzmx.com/thread-98564-1-1.html
[发帖际遇]: 小樱 被钱袋砸中进医院,看病花了 1 樱币. 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

签到天数: 44 天

[LV.5]常住居民I

 楼主| 发表于 2025/1/12 11:14 | 显示全部楼层 |Google Chrome 131.0.0.0|Windows 10
小樱 发表于 2025/1/12 05:34
没有bug,从图上看你的规则写法有问题
看起来你是要把规则反转过来吗?用 a.com/imgs/ 输出b.com的数据, ...

谢谢小樱,但小樱原来的写法也有些问题,url_rewrite匹配整个url,所以开头不应该用^,不然匹配不到了
但我觉得我原来的写法应该也能匹配,(http|ws)应该可以捕获http协议头,后面$1s表示https,kangle是不支持用变量描述协议头吗?
我刚刚试了一下,下面两种匹配似乎效果不一样
  1. a.com(.*) => b.com$1
复制代码
  1. a.com/(.*) => b.com/$1
复制代码

只有后者能正常工作,对于前者,如果直接访问a.com,会转发到a.com/b.com上,导致404。但问题是有时候访问并不会特意在下面加上一个斜杠
我之前也考虑过rewrite模块,但有两个问题,一个是一直不知道prefix的具体作用,另一个就是,即便我勾选了internal选项并将目标设置为代理,我去访问的时候仍然会出现302重定向而不是我期望的反代
[发帖际遇]: mbs654321 捡了钱没交公 威望 降了 2 . 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

 成长值: 405

签到天数: 4760 天

[LV.Master]伴坛终老

发表于 2025/1/12 18:28 | 显示全部楼层 |Google Chrome 131.0.0.0|Windows 10
mbs654321 发表于 2025/1/12 11:14
谢谢小樱,但小樱原来的写法也有些问题,url_rewrite匹配整个url,所以开头不应该用^,不然匹配不到了
...


kangle主要底层核心是c++开发的,一些模块是c和go,对于重写模块要用c的正则表达式,可以在这里测试效果,不同语言用的正则不一样,所以可能会有所不同,可以在flavor选择C#,检查group值是否符合预期,也就是$1,$2
https://regex101.com/
尾部不加/的话,会导致一些特殊路径处理出现问题,比如说本来要的是imgs,但是imgs123也会命中,然后就变成了https://b.com123,不但imgs会丢失,而且会引起目标域名错误,所以一般来说尾部要加个/确保目录正确

正则开头确实不需要加^,大半夜的打着游戏切屏记错了多打了个^,那我去帖子上编辑把开头^删除了
所以测试能成功吗?ws理论上是在http的基础上进行101协议升级到ws的,应该直接就支持了

欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

签到天数: 44 天

[LV.5]常住居民I

 楼主| 发表于 2025/1/13 10:14 | 显示全部楼层 |Google Chrome 131.0.0.0|Windows 10
小樱 发表于 2025/1/12 18:28
kangle主要底层核心是c++开发的,一些模块是c和go,对于重写模块要用c的正则表达式,可以在这里测试效 ...

是的,用url_rewrite模块可以正常工作
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2025/1/15 17:40 , Processed in 0.199204 second(s), 23 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表