Ngrok 是一款内部端口转发,对于微信类似的开发很有用的😆
可参照墙内(花生壳 or nat123)
概述
编译环境:
Go 1.4.1 强烈建议
根域名: web.hocg.in
,即生成的域名为*.web.hocg.in
文件结构:
ngrok
├── bin
│ └── ngrok.cfg
├── client.sh
├── code.sh
└── server.sh
部署环境:
服务器OS: Ubuntu-15
客户端OS: Ubuntu-16
安装
环境依赖及源码下载
以下命令根目录统一在
/opt
1 | 环境依赖 |
生成证书 && 编译
以下命令根目录统一在
/opt/ngrok
code.sh
文件
生成证书 && 编译服务端
DOMAIN
为配置的根域名
, 用于签名.
1 | !/bin/bash |
客户端
前置条件: Go需先增加对这些平台交叉编译的支持
Windows
go的src
目录1
GOOS=windows GOARCH=amd64 ./make.bash
nginx
目录,编译1
GOOS=windows GOARCH=amd64 make release-client
macOS
go的src
目录1
GOOS=darwin GOARCH=amd64 ./make.bash
nginx
目录,编译1
GOOS=darwin GOARCH=amd64 make release-client
Linux
nginx
目录,编译1
make release-client
配置文件
ngrok.cfg
文件
server_addr
为配置的根域名
,4443
为默认端口
1 | server_addr: web.hocg.in:4443 |
运行文件
server.sh
文件
服务器运行
DOMAIN
为配置的根域名
.
注释的那一句用于后台运行
1 | !/bin/bash |
client.sh
文件
客户端运行, default:linux
具体环境修改具体内容
1 | !/bin/bash |
使用
若需变更域名, 需修改
code.sh
的DOMAIN
、server.sh
的DOMAIN
与./bin/ngrok.cfg
的server_addr
编译
1 | sh code.sh |
成功 检查
ngrok/bin
文件夹是否存在ngrok
andngrokd
服务端
1 | sh server.sh 8888 9999 |
客户端
1 | sh client.sh 8080 dm |
检验
访问:http://dm.web.hocg.in:8888
重要
关于域名解析
eg. *.web.hocg.in
路径解析需配置*.web
and web
两个A记录
关于签名
最好在同一环境进行服务端
和客户端
的编译
小技巧
- 如何让服务端的
ngrok
后台运行正常的
nohup
或&
是无法使ngrok
后台运行的
需使用screen
1
2
3
4
5
6
7
8
9
10安装
\# apt-get install screen
使用
screen -S [命名] [需放入后台的命令]
使用 ctrl+A+D 让其运行在后台
查看screen 后台进程
screen -ls
重新连接后台进程
screen -r [进程id]
可能遇到的异常
Go-1.2.1语言版本不支持
go version
1
2
3
4
5github.com/gorilla/websocket
src/github.com/gorilla/websocket/client.go:361: unknown tls.Config field 'GetCertificate' in struct literal
src/github.com/gorilla/websocket/client.go:370: unknown tls.Config field 'ClientSessionCache' in struct literal
src/github.com/gorilla/websocket/client.go:373: unknown tls.Config field 'CurvePreferences' in struct literal
make: *** [client] Error 2Go编译器找不到
go-bindata
1
2
3GOOS="" GOARCH="" go get github.com/jteeuwen/go-bindata/go-bindata
/bin/sh: 1: go: not found
make: *** [bin/go-bindata] Error 127
请注意配置好
GOROOT
和GOPATH
GOROOT
为安装GO的目录GOPATH
自定义一个GO插件下载目录执行以下shell下载插件
1
go get -u github.com/jteeuwen/go-bindata/...
END:)