ngrok的https等多隧道搭建及使用(菜鸟篇)

栏目: 服务器 · 发布时间: 7年前

概述: 内网穿透,可以做到别人在异地访问你本地的服务。如果你需要调试微信程序可以用到本方法,或者你负担不起云服务器高配置的价格,这里有个方案:自己准备一台电脑再另购一个低配的云服务器,还需要一个域名。目前内网穿透产品有花生壳、Nat123、frp,ngrok等等,本人不对这些产品做比较,今天只基于ngrok,介绍它的环境搭建、服务端配置以及客户端的http,https,远程登录等多隧道配置。

1 环境搭建

  1.1 本文所使用的环境

顶级域名,一台旧的电脑(Ubuntu Server 16.04.10版本,没有的话你可以自己安装虚拟机),公网服务器(Ubuntu Server 16.04.10版本),git(2.7.4),go(1.9.2)

  1.2 环境配置

   1.2.1 git的安装

apt-get  install git ,使用命令git --version 如果看到版本号则安装成功。

1.2.2 Go 环境安装

apt-get install golang-1.9, 然后vim /etc/profile,添加环境变量如下:

export GOROOT=/usr/lib/go-1.9

export GOPATH=/data/software/gocode

export PATH=$PATH:$GOROOT/bin

然后source /etc/profile生效后,安装完后使用命令 go version 查看,注意:使用低版本在后面生成证书会出问题。

1.2.3 域名解析配置

ngrok的https等多隧道搭建及使用(菜鸟篇)

把 *.ngrok与ngrok都配置一遍

ngrok的https等多隧道搭建及使用(菜鸟篇)

vim /etc/profile 追加export NGROK_DOMAIN=ngrok.abc.com

abc是你自己的域名地址。

2 编译

2.1 下载源码

切换到你的工作目录,比如我的是/data

git clone https://github.com/inconshreveable/ngrok.git ngrok

2.2 生成证书

cd /data/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

然后把证书拷贝到本目录的assets下:

cp rootCA.pem assets/client/tls

cp server.crt assets/server/tls

cp server.key assets/server/tls

2.3 编译

cd /data/ngrok 切换到ngrok目录后,分别执行以下命令

#linux服务端

GOOS=linux GOARCH=386make release-server

#linux客户端

GOOS=linux GOARCH=386make release-client

如果遇到timeout错误,网络问题,多执行几次,编译成功后,在bin/linux_386下会生成两个文件ngrok ngrokd,其中ngrok对应客户端,ngrokd对应服务端。

3 部署

3.1 ngrokd部署到服务端

ngrokd拷贝部署到公网服务器,并把刚刚生成的证书也一并拷贝到你自定义的目录下。

启动ngrokd 执行如下命令

nohup /etc/remote/ngrokd -tlsKey=/etc/remote/server.key -tlsCrt=/etc/remote/server.crt -domain=ngrok.abc.com -httpAddr=:19091 -httpsAddr=:19092 -tunnelAddr=:19094 -log="ngrok.log" &

domain要和前面你所设置的域名保持一直,httpAddr http端口,httpsAddr https端口,tunnelAddr表示和客户端链接的通道端口,默认是4443, 要注意这些端口需要设置开放外部能够访问。

ngrok的https等多隧道搭建及使用(菜鸟篇)

出现上图所示,则说明服务的启动成功

3.2 ngrok部署到客户端

ngrok文件拷贝到你的内网系统中,在同目录下新建ngrok.cfg文件,这里贴上我的配置:

server_addr: ngrok.fengpro.com:19094

trust_host_root_certs: false

tunnels:

http:

proto:

http: 8080

subdomain: api

ssh:

remote_port: 19093

proto:

tcp: 22

client:

subdomain: client

proto:

https: 8443

这里需要注意yaml格式,注意空格缩进。server_addr 后面的域名是你在公网服务器上配置的域名,端口是你ngrokd服务端启动的时候指定的。tunnels是配置隧道协议了,subdomain表示子域名名称,比如你在本地开启了tomcat的8080端口运行,待会客户端启动成功后,在公网可以用http://api.ngrok.fengpro.com:19091 即可访问到你内网的tomcat服务;ssh 这块配置的是远程登录你的内网服务器;如果需要https访问,如client这里,proto指定为https ,在浏览器中输入https://client.ngrok.fengpro.com:19092 即可。

配置好后启动客户端,命令如下:

nohup /data/ngrok/ngrok -config=/data/ngrok/ngrok.cfg -log=stdout start -all &

注意你自己设置的路径,如果配置没问题,启动会显示绿色的online表示成功,快去访问吧!!

参考文章:https://blog.csdn.net/zhangguo5/article/details/77848658?utm_source=5ibc.net&utm_medium=referral


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Filter Bubble

The Filter Bubble

Eli Pariser / Penguin Press / 2011-5-12 / GBP 16.45

In December 2009, Google began customizing its search results for each user. Instead of giving you the most broadly popular result, Google now tries to predict what you are most likely to click on. Ac......一起来看看 《The Filter Bubble》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具