如果你有一台闲置的机器在自己家里,你搭了一个服务在家里,你想让别人访问你的服务,怎么办?
微信开发需要域名,在本地调试怎么办?
内网穿透适合你!
Ngrok是一个反向代理软件,你只需拥有一台有公网IP的机器,在上面启动Ngrok服务端,然后在你本地机器开启Ngrok客户端。就可以通过公网IP访问到你家里的服务了。
使用如下:
# 官方的包真有问题,使用别人改的
git clone https://github.com/tutumcloud/ngrok.git
生成一个证书:
cd ngrok
NGROK_DOMAIN="test.domain.com"
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
注意test.domain.com
是你自己的域名!
cp base.pem assets/client/tls/ngrokroot.crt
make release-server release-client
编译成功后会在bin目录下找到ngrokd和ngrok这两个文件。其中ngrokd 就是服务端程序了。
启动服务端:
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="test.domain.com" -httpAddr=":80" -httpsAddr=":443"
httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。
编译客户端:
# windows
GOOS=windows GOARCH=amd64 make release-client
# mac
GOOS=darwin GOARCH=amd64 make release-client
设置本地客户端:
新建ngrok.cfg
:
server_addr: "test.domain.com:4443"
trust_host_root_certs: false
启动:
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=bb 8080
其中,-config指向配置文件,-log存放日志文件位置,-subdomain为自定义的域名前缀。8080为端口号。
这样通过bb.test.domain.com
就可以访问到内网8080
的服务!!!
或者TCP:
ngrok -config=ngrok.cfg -log=ngrok.log start p1 p2
cat ngrok.cfg
server_addr: "test.xxxx.com:4443"
trust_host_root_certs: false
tunnels:
p1:
remote_port: 28975
proto:
tcp: "28975"
p2:
remote_port: 28970
proto:
tcp: "28970"
网友评论