🎉🎉 wmproxy 0.2.6 发布,用 rust 仿 nginx 实现,实现多层代理
V0.2.6
- 代理C的启动命令:
wmproxy proxy -c :8092
- 代理B的启动命令:
wmproxy proxy -c :8091 -S 127.0.0.1:8092
- 代理A的启动命令:
wmproxy proxy -b :8090 -S 127.0.0.1:8091
通过如何我们就构建出了一条内部的代理通道,此时通过curl测试
curl.exe --proxy http://127.0.0.1:8090 https://www.baidu.com -I
可以得到以下正确返回200信息
HTTP/1.1 200 OK Server: wenmeng content-length: 0 HTTP/1.1 200 OK Accept-Ranges: bytes Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform Connection: keep-alive Content-Length: 277 Content-Type: text/html Date: Fri, 26 Jan 2024 02:27:04 GMT Etag: "575e1f71-115" Last-Modified: Mon, 13 Jun 2016 02:50:25 GMT Pragma: no-cache Server: bfe/1.0.8.18
项目地址
国内: https://gitee.com/tickbh/wmproxy
github: https://github.com/tickbh/wmproxy
wmproxy
已用 Rust
实现 http/https
代理,socks5
代理,反向代理,负载均衡,静态文件服务器,四层 TCP/UDP 转发,内网穿透,后续将实现 websocket
代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子
📦 安装 & 🏃 使用
安装
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 proxy -b 0.0.0.0:8090
使用
默认端口为 8090 端口,默认监听地址为 127.0.0.1
# 直接通用默认参数 wmproxy proxy # 设置账号密码 wmproxy proxy -b 0.0.0.0:8090 --user wmproxy --pass wmproxy # 其它指令 wmproxy --help #配置文件版启动 wmproxy config -c config/client.toml
启动二级代理
- 在本地启动代理
wmproxy proxy -b 127.0.0.1:8090 -S 127.0.0.1:8091 --ts
或者
wmproxy config -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
表示连接父级代理的时候需要用加密的方式链接
- 在远程启动代理
wmproxy proxy --user proxy --pass proxy -b 0.0.0.0:8091 --tc
或者
wmproxy config -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
开启客户端的证书认证信息,另一种服务端配置了username
和password
即需要客户端配置相同的用户密码才能启用认证信息,两种方式可叠加使用或者单独使用。 配置添加如下:
proxy: two_way_tls: true username: wmproxy password: wmproxy
🚥 路线图
socks5
- IPV6 支持
SOCKS5
验证方式NOAUTH
USERPASS
SOCKS5
CommandsCONNECT
UDP ASSOCIATE
http/https
- IPV6 支持
内网穿透
- Http 支持
- Https 支持
- Tcp 支持
反向代理
- 静态文件服务器
- 被动健康检查
- 主动健康检查
- 配置热加载
- 负载均衡
- 四层 TCP 负载
- 四层 UDP 负载
- 流量控制
- websocket 转发
基础能力
- 日志
扩展能力
- 请求限速 (limit_req)
- 修改 HTTP 请求 Header
- 支持 HTTP2 的内网穿透
- 控制微端
- try_paths
- tcp 转 websocket
- websocket 转 tcp

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
分钟级实时数据分析的背后——实时湖仓产品解决方案
随着信息技术的深入应用,企业对市场的响应速度也在不断提升,而且这种响应速度正在变得越来越快,没有最快只有更快。对数据实时性要求的提高,是眼下很多企业遇到的一个新的挑战。 从生产侧的视角来看,系统实时监控与实时健康状态检测已成为确保系统稳定性和可靠性不可或缺的关键功能。它们能够即时捕捉并处理潜在问题,对系统的顺畅运行起到保驾护航的作用。而在营销侧领域,搜索推荐、实时营销策略制定以及分钟级趋势分析能力,则成为了企业运营团队的核心竞争力。具体到业务实操层面,实时欺诈检测技术、异常交易监测机制、精准的行为认证手段和高效的账户校验系统等,在现今的商业环境中都扮演着至关重要的角色。 简单来说,数据的时效性,是否足够“快、精、准”,会真正影响到一个企业的生存。 随着技术的发展,湖仓一体的概念开始被提出,袋鼠云在结合当前数据湖技术的基础上,建设实时湖仓平台,满足客户亟待解决的数据需求。本文将详细介绍实时湖仓解决方案,让企业能够更专注地去解决他们的业务价值。 实时业务场景遇到的问题 数字化时代,实时数据运用广泛,尤其在互联网、电商、金融等行业,实时数据反馈对业务运营和决策制定至关重要,对于数据时效的要求...
- 下一篇
私域管理系统 LinkWeChat V5.1.2 发布
LinkWeChat 是国内首个基于企业微信的开源 SCRM,在集成了企微强大的开放能力的基础上,进一步升级拓展灵活高效的客户运营能力及多元化精准营销能力,让客户与企业之间建立强链接,帮助企业提高客户运营效率,强化营销能力,拓展盈利空间,是企业私域流量管理与营销的综合解决方案,目前已经受到企业微信的官方推荐和国家级木兰开源社区进行孵化,同时也是国家工信部重点扶持项目,同时也获得 2022 年中国开源创新大赛二等奖。 LinkWeChat V5.1.2主要的升级内容如下: 1. 文件上传兼容minio,系统内容资源存储方便多一个选择。 感谢您对我们产品的支持和信任,我们会继续努力,为您提供更好的产品和服务。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,7,8上安装Nginx,支持https2.0的开启