🎉🎉 wmproxy 0.2.7 发布,用 rust 仿 nginx 实现,多端口地址监听
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,可接受所有来自ipv4的连接信息
-
以
:
开头的地址,且不包含-
:8869
解析成 ipv4 127.0.0.1 端口 8869 及 ipv4 192.168.0.100 端口 8869
-
包含
-
的地址:8869-:8871
解析成 ipv4 127.0.0.1 端口 8869 - 8871 三个端口地址 及 ipv4 192.168.0.100 端口 8869 - 8871 三个端口地址,总共6个端口地址127.0.0.1:8869-:8871
解析成 ipv4 127.0.0.1 端口 8869 - 8871 三个端口地址 总共3个端口地址127.0.0.1:8869-192.168.0.100:8871
解析成 ipv4 127.0.0.1 端口 8869 - 8871 三个端口地址 总共3个端口地址,忽略后面的地址,只接受端口号
-
手动多个地址,可以空格或者
,
做间隔127.0.0.1:8869 127.0.0.1:8899 192.168.0.100:8899
就相应的解析成三个端口地址
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业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
研发误删的库,凭什么要 DBA 承担责任
镇楼图 三个角色 删库以及更宽泛的数据库变更场景中有三个角色,业务研发,DBA 以及使用的数据库变更工具: 业务研发通常指的是后端研发。国内最主流的技术栈还是 Java,此外 Go 也有一部分,另有全栈的则使用 Node。这些语言通常会配备对应的 ORM 和数据库打交道,Java 的 MyBatis,Go 的 GORM,Node 的 TypeORM 等。 DBA 就是数据库管理员。有些公司即使没有全职 DBA,也会有看着数据库的那个人。 数据库变更工具。公司业务稍微上了规模,一般会选择在专门的数据库变更工具上执行操作,开源的产品里比较主流的有 Archery, Yearning, Bytebase。 生命周期 交代完出场角色,我们再来说一下,数据库变更的整个生命周期: 研发在数据库变更工具上提交了一个变更工单。 工具可能进行一些自动化检测,修改字段会提示锁表,删库,删表会警告破坏应用代码的兼容性。 DBA 进行审核。 审核通过后,进行发布。 告警铺天盖地/客诉蜂拥而来,业务一排查,怀疑可能是之前的数据库变更引起的,拉上 DBA,实锤。于是再一起制定补救方案。 经过几天的奋战,最终修复了...
- 下一篇
Dante OSS v3.1.8.3 已经发布,简化 Minio 操作
Dante OSS v3.1.8.3 已经发布,简化 Minio 操作 此版本更新内容包括: fix: v3.1.8.3 主要更新 [升级] Spring Cloud Tencent 版本升级至 1.13.0-2022.0.4 其它更新 [修复] 修复伴随 Spring Boot 版本,起的 Netty 版本升级,导致的 Spring Cloud Tencent 代码不兼容运行出错问题。 [修复] 修复前端提示,在 “module” 模式下无法读取 .eslintrc.js 问题 [升级] minio docker 镜像版本升级至 RELEASE.2024-02-04T22-36-13Z 依赖更新 [升级] aws-java-sdk-s3 版本升级至 1.12.652 详情查看:https://gitee.com/herodotus/dante-oss/releases/v3.1.8.3
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 2048小游戏-低调大师作品
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS关闭SELinux安全模块
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池