# tio-proxy **Repository Path**: programmerry/tio-proxy ## Basic Information - **Project Name**: tio-proxy - **Description**: 基于T-io实现的内网穿透 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 24 - **Created**: 2021-08-05 - **Last Updated**: 2021-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Tio-Proxy

这应该是全网第一款基于T-IO实现的内网穿透工具

--- ## Tio-Proxy是什么? Tio-Proxy是一款采用java编写的内网穿透工具。 核心解决「NAT穿透」即内网穿透。 主要用于: 1. 微信、支付宝等三方公网回调请求进入本地开发调试 2. 本地项目工程跨网络演示 3. 通过跳板机访问内部网络服务 4. 代替SSH反向隧道转发 5. 群晖NAS公网访问 6. ...等等一系列 ## Tio-Proxy的优势 1. **轻巧** :客户端三方依赖几乎为0 2. **简易** :二次开发功能扩展十分简易。数据流转清晰,不再需要学习复杂的netty 3. **新奇** :网络上java系的内网穿透,清一色采用netty编写。而Tio-Proxy另辟蹊径,使用了本土socket框架。 4. **高效** :工具底层使用的是aio,实现了真正的异步非堵塞的 IO 操作 有了Tio-Proxy,让你拥有自己真正的「打洞」工具 ## 在线体验 > [点击跳转访问到后台管理界面](https://www.jlearn.cn/proxy) ![图片](https://video.jlearn.cn/ba25386f-df56-476e-86e8-187fddcb778b.png) 随意使用一个邮箱地址进行账号的创建 ![图片](https://video.jlearn.cn/9015d645-66a7-4b01-975f-7bd9ff254bee.png) 已经把编译好的客户端存放在蓝凑云上,下载后直接可用 ![图片](https://video.jlearn.cn/1a39384f-0e42-4b6c-8ac3-abe45ba2547d.png) 进入我的隧道,新增一条隧道,IP地址指的是你想要暴露服务的地址,端口就是那个服务的端口 ![图片](https://video.jlearn.cn/d9e21723-7471-40db-b660-a555aa44500b.jpg) 隧道新增后,返回列表页面,会有一个秘钥和一个地址。该秘钥就是客户端启动时所需要的key,地址就是当客户端启动后,外网访问的地址 ![图片](https://video.jlearn.cn/65992979-197c-495c-bc04-c471102890e0.jpg) 执行如图所示的命令。客户端启动成功~~,此时访问隧道列表中的那个地址,就能访问到具体服务了 ## 使用方式 由于项目新增了后台管理,需要使用一些以下服务。 1. Nginx 2. MySQL 3. Redis 启动数据库,把.doc中的init.sql文件初始化好 启动Redis 进入项目根目录进行编译。web服务在web项目中,取出jar包直接运行即刻。 web项目中数据库和Redis的配置都在application.yml文件中更改 准备好自己的域名,先解析两个主机名到服务器。比如我这里使用的域名是jlearn.cn 设置两条映射。 www.jlearn.cn 用于访问后台管理界面 *.proxy.jlearn.cn 用于生成隧道地址 启动Nginx,同时把对应的配置配好。各域名做好映射 启动web项目,再启动server项目 进入web后台管理中,自己创建好隧道,复制出key,在终端中启动客户端。 拷贝出后台管理界面中的隧道地址,直接就能访问 #### Nginx配置 ```bash server { listen 80; server_name *.proxy.jlearn.cn; location / { proxy_pass http://127.0.0.1:10010; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; client_body_buffer_size 256k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; } } ``` 这个配置是用于生成隧道地址的。至于Server项目的端口为什么是10010,这个可以在配置文件中自己设置 ```bash server { listen 80; server_name www.jlearn.cn; location /proxy { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; client_body_buffer_size 256k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; } } ``` 这个配置是用于访问后台管理的 --- ## 附录 > jdk版本 **1.8** > 项目如何编译 ```bash 进入项目目录后直接跑 mvn clean install -Dmaven.test.skip=true -T 4C -Dmaven.compile.fork=true ``` > 工具的功能迭代方向 **这个么,就靠各位亲啦** 欢迎提问,欢迎各种骚扰 > 文档建设 **这个正在规划中**。近期就会编写。顺便还会再开一个系列,讲解下这个t-io的用法