一个个人需求,需要简单的穿透一下 家里的电脑,也不需要多稳定,也没有并发。然后 通过http可以访问到内网的 一个网站,
因为服务端 是linux 系统 ,内网是 windows10服务器
所以 就采用 用golang这个语言来实现,他的跨平台编译 还是很方便的。
原理:nginx 作为 web服务,通过nginx 反向代理 把请求 转发给 golang写的 一个端口,golang 是一个服务端 和一个内网 端,golang 的软件 启动后 服务端 和内网 会建立一个隧道,把 nginx转发的数据 发送给内网服务器 从而做到内网穿透。
觉得这个小工具挺有意思的,这里简单的分享给大家。有想玩一玩的小伙伴 可以看看。
go 版本:1.23.3
项目结构 :
服务端:
客户端:
配置文件:
代码实现较为简单,安全方面只做了 简单的 token验证。
如果有需要 只建议大家 参考。
效果:
这里 nginx 怎么做反向代理 就不总结了。大家可以百度。
go windows 下编译 linux 和 exe 可执行文件
查看全局变量
bash
go env
如果 goos =windows 可编译 exe 执行文件。
cmd执行以下命令:
64位 linux
bash
set GOARCH=amd64
set GOOS=linux
切换 64位 windows
bash
set GOARCH=amd64
set GOOS=windows
需要编译哪个系统的可执行文件 就执行上面哪个命令 执行后 开始编译。
在 项目根目录下执行:
windows exe 编译命令:
bash
go build -o myapp.exe main.go
linux 执行文件命令
bash
go build -o myapp main.go
编译命令 只是举例 大家根据实际需求更改文件名
linux下后台执行命令 :
bash
nohup ./myapp > output.log 2>&1 &
源码已经准备好了。需要的小伙伴,可以去下载,参考一下~
https://wwwoop.com/home/Index/projectInfo?goodsId=37&typeParam=2