本方案使用 ngrok 来构建内网穿透的环境。
它的核心功能:能够将你本机的HTTP服务或TCP服务,通过部署有 ngrok 服务的外网服务器暴露给外网访问!
1、源码下载
git clone https://github.com/chujieyang/ngrok.git2、域名配置
使用域名 justlean.cn 来作为内网穿透时使用的域名。
添加域名解析:
ngrok.justlean.cn--->代理服务器外网IP *.ngrok.justlean.cn--->代理服务器外网IP3、创建和配置证书
#!/bin/sh # 创建证书 openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.justlean.cn" -days 5000 -out rootCA.pem openssl genrsa -out server.key 2048 openssl req -new -key server.key -subj "/CN=ngrok.justlean.cn" -out server.csr openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000 # 配置证书 cp rootCA.pem assets/client/tls/ngrokroot.crt cp device.crt assets/server/tls/snakeoil.crt cp device.key assets/server/tls/snakeoil.key4、服务端、客户端编译
请提前准备 go1.14.15 编译环境
# 服务端(linux)编译 GOOS="linux" GOARCH="amd64" make release-server # 客户端(mac)编译 GOOS="darwin" GOARCH="amd64" make release-client5、服务端配置启动
./bin/ngrokd -domain="ngrok.justlean.cn" -httpAddr=":29000" -httpsAddr=":29001"6、客户端配置启动
客户端配置文件 ngrok.cfg:
server_addr: "ngrok.justlean.cn:4443" trust_host_root_certs: false# 启动客户端 ./ngrok -subdomain pydemo -config=./ngrok.cfg 88887、启动本地服务
python -m http.server 88888、测试外网访问本地服务