🎉🎉 wmproxy 0.2.3 发布,支持负载均衡中的HTTP2功能


0.2.3 负载均衡中的HTTP2

  • HTTP2 协议处理
  • try_files 功能的实现
  • 修复bug

wmproxy

wmproxy 已用 Rust 实现 http/https 代理,socks5 代理,反向代理,负载均衡,静态文件服务器,四层 TCP/UDP 转发,内网穿透,后续将实现 websocket 代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子

项目地址

国内: https://gitee.com/tickbh/wmproxy

github: https://github.com/tickbh/wmproxy

📦 安装 & 🏃 使用

安装

cargo install wmproxy

OR

git clone https://github.com/tickbh/wmproxy
cd wmproxy
cargo install --path .
docker pull dreamwhat/wmproxy
docker run -p 82:82 -p 8090:8090 -p 127.0.0.1:8837:8837 --name proxy_bash dreamwhat/wmproxy /bin/./wmproxy -b -b 0.0.0.0:8090

使用

默认端口为 8090 端口,默认监听地址为 127.0.0.1

# 直接通用默认参数
wmproxy

# 设置账号密码
wmproxy -b 0.0.0.0:8090 --user wmproxy --pass wmproxy

# 其它指令
wmproxy --help

#配置文件版启动
wmproxy -c config/client.toml

启动二级代理

  1. 在本地启动代理
wmproxy -b 127.0.0.1 -p 8090 -S 127.0.0.1:8091 --ts

或者

wmproxy -c config/client.toml

配置文件如下:

[proxy]
# 连接服务端地址
#server = "127.0.0.1:8091"
bind_addr = "0.0.0.0:8090"
flag = "http https socks5"
# 连接服务端是否加密
ts = true
two_way_tls = true
# username = "wmproxy"
# password = "wmproxy"

# 内网映射配置的数组

#将localhost的域名转发到本地的127.0.0.1:8080
[[proxy.mappings]]
name = "web"
mode = "http"
local_addr = "127.0.0.1:8080"
domain = "localhost"

headers = [
"proxy x-forward-for {client_ip}",
"proxy + from $url",
"+ last-modified 'from proxy'",
"- etag",
]

#将tcp的流量无条件转到127.0.0.1:8080
[[proxy.mappings]]
name = "tcp"
mode = "tcp"
local_addr = "127.0.0.1:8080"
domain = ""

因为纯转发,所以在当前节点设置账号密码没有意义 -S 表示连接到的二级代理地址,有该参数则表示是中转代理,否则是末端代理。--ts 表示连接父级代理的时候需要用加密的方式链接

  1. 在远程启动代理
wmproxy --user proxy --pass proxy -b 0.0.0.0:8091 --tc

或者

wmproxy -c config/server.toml

配置文件如下:

[proxy]
#绑定的ip地址
bind_addr = "127.0.0.1:8091"

#代理支持的功能,1为http,2为https,4为socks5
# flag = "7"
username = "wmproxy"
password = "wmproxy"

#内网映射http绑定地址
map_http_bind = "127.0.0.1:8001"
#内网映射tcp绑定地址
map_tcp_bind = "127.0.0.1:8002"
#内网映射https绑定地址
map_https_bind = "127.0.0.1:8003"
#内网映射的公钥证书,为空则是默认证书
# map_cert = 
#内网映射的私钥证书,为空则是默认证书
# map_key =
# 双向认证
two_way_tls = true
#接收客户端是为是加密客户端
tc = true
#当前服务模式,server为服务端,client为客户端
mode = "server"

--tc 表示接收子级代理的时候需要用加密的方式链接,可以 --cert 指定证书的公钥,--key 指定证书的私钥,--domain 指定证书的域名,如果不指定,则默认用自带的证书参数

至此通过代理访问的,我们已经没有办法得到真正的请求地址,只能得到代理发起的请求

代理间的认证

目前提供了两种认证双式, two_way_tls 开启客户端的证书认证信息,另一种服务端配置了 usernamepassword 即需要客户端配置相同的用户密码才能启用认证信息,两种方式可叠加使用或者单独使用。 配置添加如下:
proxy:
two_way_tls: true
username: wmproxy
password: wmproxy

🚥 路线图

socks5

  • IPV6 支持
  • SOCKS5 验证方式
    • NOAUTH
    • USERPASS
  • SOCKS5 Commands
    • CONNECT
    • UDP ASSOCIATE

http/https

  • IPV6 支持

内网穿透

  • Http 支持
  • Https 支持
  • Tcp 支持

反向代理

  • 静态文件服务器
  • 被动健康检查
  • 主动健康检查
  • 配置热加载
  • 负载均衡
  • 四层 TCP 负载
  • 四层 UDP 负载
  • 流量控制

基础能力

  • 日志

扩展能力

  • 请求限速 (limit_req)
  • 修改 HTTP 请求 Header
  • 支持 HTTP2 的内网穿透
  • 控制微端
  • try_files

相關推薦

2023-12-09

0.2.1 1. 请求流量控制 2. 负载均衡 3. http接口重构 wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起

2024-01-20

V0.2.5 已实现websocket代理, 可以快速的将websocket流量转成tcp流量 完善命令行模式, 启动将更加简单   wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 负载均衡, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现web

2023-12-23

0.2.2 内网穿透优化 HTTP转发 HTTPS转发(证书在服务器,内网为HTTP) TCP转发(纯粹的TCP转发,保持原样的协议) PROXY转发(服务端接收数据,内网的客户端当成PROXY客户端,相当于逆向访问内网服务器,[新增]) wmproxy wmproxy已用Rus

2024-02-08

0.2.7 添加多地址解析监听 以下是常见的IP解析示例情况,本地ip为192.168.0.100示例: 正常IP解析 127.0.0.1:8869 解析成 ipv4 127.0.0.1 端口 8869,只接受本地来的连接信息 0.0.0.0:8869 解析成 ipv4 0.0.0.0 端口 8869,可接受所有

2023-10-28

已实现初步的反向代理支持,包含主动式健康检查,四层代理,七层代理,及配置的热加载等功能 wmproxy将用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器, 后续将实现websocket代理, 内外网穿透等, 会将实现过程分享

2023-11-04

0.2.0功能: 1. 实现内存缓冲区, 防止内存增长过多 2. 实现流量控制, 可限制某一请求占用过多流量   已实现初步的反向代理支持,包含主动式健康检查,四层代理,七层代理,及配置的热加载等功能 wmproxy 将用 Rust&n

2023-10-10

wmproxy 一个同时支持http/https/socks5的代理,通过简单配置即可获取加密通道的内网穿透功能,支持http/https/tcp内网穿透 📦 Installation & 🏃 Usage Installation cargo install wmproxy OR git clone https://github.com/tickbh/wmproxy cd wmproxy cargo ins

2022-12-10

B拦截规则创建接口实现拦截规则的自动创建。 为阿里云负载均衡打开自动拦截功能 配置日志存储 负载均衡CLB(SLB)默认不启动日志存储功能,需要手工创建并启动。 在负载均衡管理面板中选择日志管理-访问日志中对应负

2023-05-30

!你关注的短信框架终于更新啦! 🎊SMS4J 2.1.0版本正式发布!🎊 本次更新带来了诸多的新特性,也修复了先前版本中的诸多问题,接下来让我们一起来看一下本次更新的内容吧! 🎉新特性🎉 新增天翼云短信支持 V 2.1.0

2022-11-26

Magician-Web3 是一个区块链开发工具包。它由两个功能组成。一个是扫描区块链,根据开发者的需要监控交易。另一个是对 web3j 的一些二次打包,可以减少开发者在一些常见场景下的工作量。它计划支持三种链,ETH(BSC、POLYGAN 等

2022-10-03

力时不损失本地调用的语义简洁性; 3、多调用方案:支持 SYNC、ONEWAY、FUTURE、CALLBACK 等方案; 4、多通讯方案:支持 TCP 和 HTTP 两种通讯方式进行服务调用;其中 TCP 提供可选方案 NETTY 或 MINA ,HTTP 提供可选方案 NETTY_HTTP 或 Jet

2023-01-06

他数据服务的用户提供了便利。此外,EMQX Operator 2.1 即将发布,通过 EMQX 节点疏散能力在 Kubernetes 上实现了可控、平滑的优雅升级。 EMQX 12 月 EMQX 开源版发布了 v5.0.12,更新了 Dashboard 1.1.3 版本。企业版即将发布 v4.3.18 以及 v4.4

2024-02-28

Linkerd 2.15 现已发布,该版本增加了对 Kubernetes 以外工作负载的支持。新的“网格扩展(mesh expansion)”功能首次允许 Linkerd 用户将运行在虚拟机、物理机和其他非 Kubernetes 位置上的应用程序引入到网格中,为 Kubernetes 和非 Kubernet

2023-08-05

Easy Retry  致力提高分布式业务系统一致性的分布式重试平台 易用性 业务接入成本小。避免依赖研发人员的技术水平,保障重试的稳定性 灵活性 能够动态调整配置,启动/停止任务,以及终止运行中的重试数据