2024-09-14 13:35:53
wmproxy已实现包括http/https代理、socks5代理、反向代理、负载均衡、静态文件服务器、websocket代理、四层TCP/UDP转发、内网穿透等功能,并将实现过程分享出来,有兴趣的可以一起参与项目。
项目地址:国内 -
设计目标集中在负载均衡匹配规则上,以匹配正确的location进行相应操作。
初始设计方案仅支持前缀匹配,配置如 /wmproxy/xx,则访问 /wmproxy/xx 会被分配至该location,此方案简单,但复杂需求无法满足。
设计方案需求包括前缀匹配外的其他多种需求匹配,如正则匹配、中间匹配、后缀匹配等。通过引入Matcher类,初始化时处理字符串或映射格式,简化配置。
Matcher初始化后,通过判断传入数据是否正确匹配实现路径处理。主要复杂点在于路径匹配,包括正则匹配、前缀匹配、中间匹配和后缀匹配。通过分割字符串处理,数组第一个元素进行前缀匹配,最后一个元素进行后缀匹配。若无'*'字符,数组长度为1,符合前缀匹配。
匹配函数在Matcher中实现,引用src资源,无需创建内存对象,直接利用正则匹配进行路径匹配。
匹配规则在复杂匹配中至关重要,能轻松将请求分配至合适位置。本文重点介绍正则匹配及带*的路径匹配。