先回答下疑问:
为什么写这个东西?
网上好多用go实现的内网穿透都是以ip地址加端口形式访问的,虽然可以实现功能,但是用不了微信开发平台和需要域名授权的开发中使用。
为什么不用花生壳和ngrok?
花生壳免费版非常卡,在域名上必须使用购买花生壳官方域名,ngrok没用过貌似是收费的。而大部分企业或者个人开发者基本上都有服务器,所以成本很低。
这个软件我命名为small-proxy,免费开源并且跨平台,下载地址:
使用教程:
解压压缩包打开,如下图,server文件夹需要传到服务器上(如果是FTP上传需要注意使用二进制文件传输),client文件夹留在本机。
服务端配置
然后我们打开server文件夹,如下图,hosts是反向代理软件包,proxy是内网穿透软件包。
服务端配置-内网穿透
然后cmd命令进入proxy目录内开启内网穿透服务,需要注意的是你服务器的操作系统选择对应的执行文件,例如:windows系统64位=proxy_windows_amd64.exe。
命令行执行:./proxy_darwin_amd64 start -d -l 5531(用户访问的端口) -r 2001(与客户端通信的端口),命令行说明可输入./proxy_darwin_amd64 help获取,特殊说明下-d参数为守护进程运行,建议加上如果不加关闭终端,服务也跟着关闭了。
关闭守护进程命令为./proxy_darwin_amd64 stop。TIPS:阿里云服务器开启端口需要在阿里云控制台安全组内添加相应端口。
服务端配置-反向代理
这一步为可选配置,如果不配置这一步只能用ip:端口进行访问。
cmd进入hosts目录内vim编辑配置文件hosts.conf保存,如下图
域名解析A记录wx.5lazy.cn到你服务IP地址上,然后执行./hosts_darwin_amd64 start -d
需要注意的是运行反向代理默认监听80端口,如果之前有nginx或者apache请更换端口,后面会讲到如何设置反向代理接管nginx。需要注意的是修改配置文件后需重启反向代理服务。
客户端配置
回到本机client文件夹中,然后执行./proxy_darwin_amd64 start -d -l 127.0.0.1:80 -h 44.44.44.44 -r 2001
支持转发到docker内的web服务只需把127.0.0.1换成docker的ip地址。
本地的nginx或者apache网站需配置域名为wx.5lazy.cn,然后访问wx.5lazy.cn就可以访问到你刚才绑定的目录了。
hosts反向代理接管nginx或者apache请求
以nginx举例,假设你之前的nginx监听的端口是80,有两个虚拟主机域名分别为a.5lazy.cn和b.5lazy.cn,这时候80端口已经被我们hosts反向代理监听,我们需要把nginx之前的80端口改成其他端口(这里为8888)。
进入nginx的安装目录下的conf目录下更改nginx.conf文件把listen 80;改成listen 8888;然后进入vhost目录更改虚拟主机配置文件同上,重启nginx。
这时候需要进入我们服务端的server/hosts下编辑hosts.conf文件加入如下两行,然后重启hosts。
a.5lazy.cn=127.0.0.1:8888
b.5lazy.cn=127.0.0.1:8888
Comments : 8