ubuntu搭建Ngrok服务器 共享80端口 可自定义域名

本教程前提:

  • 有域名需要解析到服务器

  • 有公网ip的服务器

域名解析

我们这里用3级域名解析到服务器,自定义域名则为4级域名。

ngrok.daliycode.com A记录到 213.123.123.123(你的服务器ip)
*.ngrok.daliycode.com CNAME 到ngrok.daliycode.com

域名解析完毕。

安装Git

apt-get install git

安装go环境

#下载go
cd /usr/local/src
wget http://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/目录
mv go /usr/local/

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

#检查是否安装正确
go vesion

go.PNG

安装ngrok

1、下载ngrok,设置域名,ngrok地址

cd /usr/local/
git clone https://github.com/inconshreveable/ngrok.git
export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN="ngrok.daliycode.com"

2、为域名生成证书

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

3、在软件源代码目录下面会生成证书文件,把这些文件拷贝到指定位置

cd /usr/local/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

4、如果是在国内的服务器需要改下面文件,香港或者国外的服务器不需要,跳过这一步

vim /usr/local/ngrok/src/ngrok/log/logger.go
log "github.com/keepeye/log4go"

5、编译服务器端

cd /usr/local/ngrok/
GOOS=linux GOARCH=amd64 make release-server

6、编译客户端

#mac os 64位操作系统
cd /usr/local/ngrok/
GOOS=darwin GOARCH=amd64 make release-client

#linux 64位
GOOS=linux GOARCH=amd64 make release-client

#windows 32位系统
cd /usr/local/ngrok/
GOOS=windows GOARCH=386 make release-client

#windows 64位系统
cd /usr/local/ngrok/
GOOS=windows GOARCH=amd64 make release-client

编译出来的客户端在/usr/local/ngrok/bin目录

20181108155947.png

ngrokd  是linux的服务器端应用

ngrok   是linux的客户端应用

ngrok.exe 是windows客户端应用 在对应的文件夹下

7、服务端启动

这里使用8888端口,80端口已经给nginx使用了,因此后面还要用nginx将80端口转发到8888端口实现不用在地址栏输入端口号。

/usr/local/ngrok/bin/ngrokd -domain ngrok.daliycode.com -httpAddr :8888 -httpsAddr :8043

8、客户端使用

这里演示的是 linux客户端的使用。将服务上生成的linux客户端ngrok下载到本地linux服务器。 我这里放到了/usr/local/ngrok/目录,创建客户端配置文件,与ngrok同目录.

vim ngrok.yml 
#内容如下

server_addr: ngrok.daliycode.com:4443
tunnels:
  blog:
    proto:
      http: 8001 #这个是本地linux服务器的web访问端口

20181108161216.png

启动客户端

/usr/local/ngrok/ngrok -config=/usr/local/ngrok/ngrok.yml -log=/usr/local/ngrok/ngrok.log start blog

可将上面这个启动命令写到sh文件里面,每次只需要执行sh文件即可。

QQ截图20181108153959.png

到这里就可以使用 blog.ngrok.daliycode.com:8888 访问本地linux服务器上的web服务了。

比如你本地再搭建个video站,先用nginx添加虚拟站 端口为8002。

创建配置文件ngrok2.yml

server_addr: ngrok.daliycode.com:4443
tunnels:
  video:
    proto:
      http: 8002 #这个是本地linux服务器的web访问端口

启动客户端:

/usr/local/ngrok/ngrok -config=/usr/local/ngrok/ngrok2.yml -log=/usr/local/ngrok/ngrok2.log start video

那么访问地址就为:vedio.ngrok.daliycode.com:8888  这样就实现了自定义域名。

9、 线上服务器 *.ngrok.daliycode.com 80端口转发到8888端口

带有端口的站点是无法用来调试微信开发的。那么我们用线上服务器的nginx 将来自*.ngrok.daliycode.com 80端口的请求转发到8888端口,这样仅仅只转发*.ngrok.daliycode.com 80端口的请求,实现与线上服务器已有的站点共享80端口。

nginx 添加配置

server {
    listen 80;
    server_name *.ngrok.daliycode.com;
    keepalive_timeout 70;
    proxy_set_header "Host" $host:8888;
    location / {
        proxy_pass_header Server;
        proxy_redirect off;
        proxy_pass http://127.0.0.1:8888;
    }
    access_log off;
    log_not_found off;
}

最终我们用 blog.ngrok.daliycode.com 即可访问本地linux服务器上的 8001的站点了。

上述是真实案例,blog.ngrok.daliycode.com可以访问时,表示我开启客户端了。

参考:

https://blog.csdn.net/dszgf5717/article/details/79119254 

猜你喜欢

转载自blog.csdn.net/cool16/article/details/83864298