ngrok 外网映射工具


环境: centons7  (yum update)

* 需要一个已备案的域名 *

一、环境安装

1、安装git 

# 安装git所需要的依赖包  

yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++  

# 下载新版本git (版本列表 https://www.kernel.org/pub/software/scm/git/)  

cd /usr/local  

wget https://www.kernel.org/pub/software/scm/git/git-2.16.2.tar.gz  

# 解压  

tar zxvf git-2.16.2.tar.gz  

# 编译git  

cd git-2.16.2  

./configure --prefix=/usr/local/git  

make  

make install  

#删除刚才下载的git包

cd /usr/local

rm git-2.16.2.tar.gz -y

安装go

# 下载go 
cd /usr/local
www.golangtc.com/static/go   (这里是列表,注意自己的系统是多少位的,linux-amd64是64位的。linux-386是32位的)
wget https://www.golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz  
如果很慢,可以下载到本地,在上传到服务器

# 解压  
tar -zxvf go1.9.2.linux-amd64.tar.gz /usr/local/  

# go的命令需要做软连接到/usr/bin  
ln -s /usr/local/go/bin/* /usr/bin/ 

#删除下载的go包
rm go1.9.2.linux-amd64.tar.gz -y

2、go环境设置

#安装go语言的安装环境
yum install mercurial bzr subversion -y
#新建go目录作为项目目录
mkdir -p $HOME/go
#用cat的方法在尾部增加配置配置golang的 GOROOT GOPATH
#(注意,这里GOROOT 后面的路径是你go解压的路径,如果不是按照我的方法解压的,请注意看一下)
下面这段,整段复制粘贴过去
cat >>$HOME/.bash_profile<<EOF
export GOROOT=/usr/local/go    
export GOPATH=\$HOME/go
export PATH=\$PATH:\$GOROOT/bin
EOF
#让配置生效
source $HOME/.bash_profile

3.检查下go的env环境变量
go env

输出:
有一段输出就行了,比如这样的
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"

二、ngrok配置

下载ngrok
cd /usr/local/  
git clone https://github.com/inconshreveable/ngrok.git

生成证书

NGROK_DOMAIN='server.xxx.com' # 自己已备案的域名

cd /usr/local/ngrok
openssl genrsa -out rootCA.key 2048  
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.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 rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000 

拷贝证书覆盖ngrok原来的证书

cp rootCA.pem assets/client/tls/ngrokroot.crt 
cp server.crt assets/server/tls/snakeoil.crt 
cp server.key assets/server/tls/snakeoil.key

1、生成服务端

cd /usr/local/ngrok/  
GOOS=linux GOARCH=amd64 make release-server  #这里GOOS后面是你的系统,我是linux,GOARCH 后面是系统,64位是amd64,32位是386


然后就是等待下载了,没有进度条,耐心等待。
这里可能报各种错,我当时就很崩溃。
生成的服务端在/usr/local/ngrok/bin   下的  ngrokd文件

生成客户端
cd /usr/local/ngrok/  
GOOS=windows GOARCH=amd64 make release-client  #这里GOOS后面是你的系统,我是要在window上启动客户端,GOARCH 后面是系统,64位是amd64,32位是386


然后就是等待下载了,没有进度条,耐心等待。
生成的在/usr/local/ngrok/bin/windows_amd64  的ngrok.exe  
都在bin下,服务端是ngrokd   客户端是ngrok

<!--linux服务端-->
GOOS=linux GOARCH=386 make release-server (32位)
GOOS=linux GOARCH=amd64 make release-server(64位)

<!--Mac OS客户端-->
GOOS=darwin GOARCH=386 make release-client
GOOS=darwin GOARCH=amd64 make release-client

<!--windows客户端-->
GOOS=windows GOARCH=386 make release-client
GOOS=windows GOARCH=amd64 make release-client


启动服务器端

cd /usr/local/ngrok/bin
#./ngrokd -domain="server.xxx.com" -httpAddr=":80" -httpsAddr=":8081" -tunnelAddr=":4443"
./ngrokd -domain="server.xxx.com"  # 自己备案的域名

后台启动:

nohup  ./ngrokd -domain="server.xxx.com" -httpAddr=":8081" -httpsAddr=":8082" -log=stdout & 

或则

nohup  ./ngrokd -domain="server.xxx.com" -httpAddr=":8081" -httpsAddr=":8082"  > /dev/null 2>&1 &
#-domain后面你上面写的域名  -httpAddr http端口  -httpsAddr https 端口 
#-tunnerlAddr 客户端端口,连接端口

启动客户端(window) 
将/usr/local/ngrok/bin/../中的 ngrok.exe  下载到本地windows环境

1、在ngrok.exe 同目录下创建 ngrok.yml 文件;内容如下: 

server_addr: "server.xxx.com:4443"
trust_host_root_certs: false
tunnels:
 uiweb:
  subdomain: uiweb
  proto:
   http: 8080
   https: 8080

2、同目录创建文件 startup.bat ,内如下:

ngrok -config ngrok.yml start uiweb 

域名解析开启

*.server

nginx 配置代理

server {
    listen       80;
    server_name  uiweb.server.xxx.com;

    location / {
      proxy_pass http://127.0.0.1:8081;
      proxy_set_header Host $http_host:8081;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

### 或者 使用nginx 代理到其他端口(我这里服务器上端口是:8081)
upstream ngrok {
    server 127.0.0.1:8081;
    keepalive 64;
}

server {
    listen 80;
    server_name "*.xxx.xxx.com";
    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:8081;
        proxy_set_header X-Nginx-Proxy true;
        proxy_set_header Connection "";
        proxy_pass      http://ngrok ;
    }
}

访问:

uiweb.xxx.xxx.com  (nginx  做了方向代理)

nohup  ./ngrokd -domain="ymys.usooft.com" -httpAddr=":8081" -httpsAddr=":8082" -log=stdout &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值