服务器环境:
阿里云服务器一台(centos7.4-64)
二级域名一个(例:ngrok.xxx.com)
编译环境:
go语言,gcc编译
所需软件:
golang、gcc、git、ngrok
解析域名:
将ngrok.xxx.xom、*.ngrok.com解析到服务器上
直接使用yum安装
yum install gcc -y
yum install git -y
golang有两种安装方式,源码安装和二进制文件安装,这里使用的是二进制安装。
提示:使用源码安装1.4以上版本需要先安装1.4,然后再安装更高版本
下载地址:https://studygolang.com/dl
下载版本为:go1.11.linux-amd64.tar.gz
将文件解压到/usr/local下,解压完成后目录下会有一个go文件夹
tar -C /usr/local/ -zxvf go1.11.linux-amd64.tar.gz
设置go的环境变量,
vim /etc/profile
在最后一行后面添加下面两行内容(根据自己的安装目录设置目录路径)
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
然后执行下面的命令,使环境变量立即生效
source /etc/profile
执行以下命令查看go环境是否安装成功
go version
提示:若提示命令找不到,请查看路径和配置的路径是否一致,若执行其他命令都找不到,说明/etc/profile文件语法有误,请重新编辑文件。当然,这时编辑命令也不可用,请在命令的名称前加上/bin/+[command]。
通过git下载ngrok
cd /usr/local
git clone https://github.com/tutumcloud/ngrok.git ngrok
请注意将命令中的域名替换成自己的域名
cd /ngrok
mkdir cert
cd cert
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=gork.xxx.com" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=ngork.xxx.com" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
将原证书覆盖
yes|cp rootCA.pem ../assets/client/tls/ngrokroot.crt
yes|cp device.crt ../assets/server/tls/snakeoil.crt
yes|cp device.key ../assets/server/tls/snakeoil.key
(必须在ngrok目录下编译)
cd ../
make release-server
编译完成后ngrok的bin目录下会有一个ngrokd文件
./bin/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="ngrok.xxx.com" -httpAddr=":8080" -httpsAddr=":8081"
# -domain 访问ngrok是所设置的服务地址生成证书时那个
# -httpAddr http协议端口 默认为80
# -httpsAddr https协议端口 默认为443 (可配置https证书)
# -tunnelAddr 通道端口 默认4443
# -log 将终端信息重定向到知道的文件中,(最好加上,不然日志信息会一直在控制台输出)
提示:在上面的命令后加上&,可将服务器在后台运行
如何关闭服务?
使用netstat -tunpl查看服务的pid,通过kill [pid]可结束进程
GOOS=windows GOARCH=amd64 make release-client
根据客户端的使用环境编译对应的客户端软件
#Linux 平台 32 位系统:GOOS=linux GOARCH=386
#Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
#Windows 平台 32 位系统:GOOS=windows GOARCH=386
#Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
#MAC 平台 32 位系统:GOOS=darwin GOARCH=386
#MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64
#ARM 平台:GOOS=linux GOARCH=arm
生成后ngrok的bin目录下会有对应的客户端文件目录
将客户端下载到自己使用的电脑中,使用前需要一个启动配置文件。
简单配置:
server_addr: "ngrok.xxx.com:4443"
trust_host_root_certs: false
域名就是你要使用的二级域名,端口号为服务器启动后的tunnelAddr端口,没有修改的话就是4443
客户端启动命令(客户端使用是在dos窗口中)
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=test 80
# -config 启动配置文件路径
# -log 启动日志,若失败可在此文件查看失败原因
-subdomain 子域名前缀
若启动成功,则会出现以下内容:
其中http://test.ngrok.xxx.xom为外网访问域名,https对应的是https协议
以上访问外网域名的时候需要加上端口号,但是在我们希望使用默认的端口号。如果服务器使用的是nginx,则可通过配置nginx实现端口转发:
upstream nodejs {
server 127.0.0.1:8080;
keepalive 64;
}
server {
listen 80;
server_name *.ngrok.xxx.cn;
access_log /home/logs/ngrok.xxx.cn.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host:8080;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://nodejs;
}
}
通过以上配置内容,新建一个server,然后重启nginx服务器,这样不需要携带端口号即可访问