Linux搭建Ngrok服务器详细过程
目录
- 1.安装前置软件
- 2.go语言环境
- 3.下载Ngrok
- 4.详细配置
- 5.问题与解决方案
1.安装前置软件
安装git
#安装命令
yum -y install git
2.go语言环境
1.安装go语言并解压到/usr/local/目录下,目录可以自己换别的,go语言版本也可以换高级点的
wget https://storage.googleapis.com/golang/go1.12.0.linux-amd64.tar.gz
tar -C /usr/local/ -zxvf go1.12.0.linux-amd64.tar.gz
2.配置go语言的环境变量
1)打开配置文件
vi /etc/profile
2)在最下面新增以下代码
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
3)重新加载配置文件
source /etc/profile
3)验证go是否安装成功
go version
结果显示版本信息就表示安装成功
[root@localhost bin]# go version
go version go1.12.0 linux/amd64
3.下载Ngrok
1)使用大佬已处理好依赖的ngrok文件
下载下来会有一个ngrok文件夹,里面有ngrok压缩包,此时将这个ngrok下载到/usr/中,后面解压后就没用了,可以删除这里下载的ngrok文件夹
cd /usr/
git clone https://github.com/haungjianli/ngrok
2)解压里面的ngrok压缩包
这里解压的ngrok是真正的ngrok文件
tar -C /usr/local/ -zxvf ./ngrok.tar.gz
4.详细配置
1)创建证书
使用域名和IP地址两种方式创建证书时配置有部分不同
①使用域名时
#进入ngrok目录
cd /usr/local/ngrok
#使用openssl创建证书
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.site" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=ngrok.site" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
②使用公网IP地址时
#进入ngrok目录
cd /usr/local/ngrok#证书(使用IP地址时必须要配置这一行):
echo subjectAltName = IP:36.134.235.178 > extfile.cnfopenssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=xx.xx.xx.168" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=xx.xx.xx.168" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000 -extfile extfile.cnf
2)复制并覆盖到 assets 构建的时候自动引用
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
3) 生成服务端与客户端
根据自己服务器与客户端的操作系统选择命令。
<!--linux服务端/客户端-->
GOOS=linux GOARCH=386 make release-server (32位)
GOOS=linux GOARCH=amd64 make release-server(64位)GOOS=linux GOARCH=386 make release-client (32位)
GOOS=linux GOARCH=amd64 make release-client(64位)<!--Mac OS服务端/客户端-->
GOOS=darwin GOARCH=386 make release-server
GOOS=darwin GOARCH=amd64 make release-serverGOOS=darwin GOARCH=386 make release-client
GOOS=darwin GOARCH=amd64 make release-client<!--windows服务端/客户端-->
GOOS=windows GOARCH=386 make release-server
GOOS=windows GOARCH=amd64 make release-serverGOOS=windows GOARCH=386 make release-client
GOOS=windows GOARCH=amd64 make release-client
4)启动服务端
#进入到bin目录
cd /usr/local/ngrok/bin
#启动(如果是域名,则把domain中的IP换成域名)
./ngrokd -domain="xx.xx.xx.168" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"
如果需要后台启动
#后台启动命令
nohup ./ngrokd -domain="xx.xx.xx.168" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" & >/dev/null 2>&1 &
端口可以自行设置
①httpAddr是 http的端口,默认80,
②httpsAddr是 https的端口,默认443,
③tunnelAddr是 客户端连接ngrok的端口,默认设置4443
5)启动客户端
以windows为例:
把/bin/windows_amd64/ngrok.exe文件传输到本地。
然后在当前目录下新建文件ngrok.cfg,注意与ngrok.exe在相同目录下。
server_addr: "xx.xx.xx.xx:4443"
trust_host_root_certs: false
此处xx.xx.xx.xx需要写服务端所在的IP或者域名,4443为之前设置的tunnelAddr端口
新建脚本start.bat
①直接启动(IP方式或者直接使用服务端配置的域名)
ngrok -config=ngrok.cfg -log=ngrok.log 8080
设置proto则指定某种方式穿透
ngrok -proto=https -config=ngrok.cfg -log=ngrok.log 8080
8080就是本地需要穿透的端口
norok.log 就是日志的日志的名称
②使用子域名方式启动
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=xxx 8080
-log不是必须的,可以删除-log
双击start.bat即可。
如果是以IP地址来穿透,会出现穿透后地址为 xxxxxx.36.134.235.178:80 这种情况,此时无法成功访问,解决办法看最后的问题与解决方案
5.问题与解决方案
1.使用IP地址穿透时,穿透成功的链接地址为xxxxxx.36.134.235.178这种时。
去掉随机生成的 subdomain
ngrok 客户端会自动生成一个随机子域名或者用户自定义一个,总之无论如何都会有一个域名,这就会导致 ip 域名无效, 例如http://41254wg5.36.134.235.178 -> localhost:80, 解决办法就是改源码,去掉随机生成的 subdomain。代码地址:src/ngrok/server/tunnel.go 第89 行
// src/ngrok/server/tunnel.go #89 行
// Register for random URLt.url, err = tunnelRegistry.RegisterRepeat(func() string {return fmt.Sprintf("%s://%x.%s", protocol, rand.Int31(), vhost)}, t)
修改后:
return fmt.Sprintf("%s://%s", protocol, vhost)
注意: 删掉 %x. ,rand.Int31(), 以及该文件第一行引入的 math/rand,重新编译出服务端与客户端即可。这样不加 -subdomain 选项就不会有子域名。
重新生成服务端与客户端,再启动
2.生成服务端与客户端时发生错误
go get ngrok/…: malformed module path “ngrok”: missing dot in first path element
make: *** [Makefile:8: deps] Error 1
进入环境配置文件,新增配置
vi /etc/profile
export GO111MODULE=off
重新载入配置文件source /etc/profile
Linux搭建Ngrok服务器详细过程相关推荐
- Linux下服务器搭建(2)——linux搭建svn服务器详细过程 及 使用TortoiseSVN客户端连接服务器
环境: Linux环境为Centos7.2x64位:Centos6+版本搭建过,通用 首先安装svn,svn是subversion的缩写. 检查是否安装过: rpm -qa | grep subver ...
- Windows搭建ngrok服务器、Linux搭建ngrok服务器、支持用户管理
微信公众号.支付宝支付等开发要求有公网(外网)服务器.每次调试时,上传代码到服务器很不方便.ngrok很好的解决了这一问题.网上的文章大多是讲怎么在Linux下搭建ngrok服务器.其实依靠云计算的强 ...
- Linux搭建SVN服务器详细教程
前言 本文讲解Linux系统下如何搭建SVN服务器,详细说明各配置项的功能,最终实现可管控多个项目的复杂配置. SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统 ...
- 链接不到服务器_新手搭建云服务器详细过程
最近突然想使用下服务器,为后续工作准备,作为之前Linux都没有玩过的我感觉很费劲,所以就是无数次的百度,最终将服务器搭建好了:期间整理了一些资料,和过程上也做了些笔记,这里和大家分享下,希望对和我一 ...
- 新手搭建云服务器详细过程
最近突然想使用下服务器,为后续工作准备,作为之前Linux都没有玩过的我感觉很费劲,所以就是无数次的百度,最终将服务器搭建好了:期间整理了一些资料,和过程上也做了些笔记,这里和大家分享下,希望对和我一 ...
- 易乐游装在云服务器_新手搭建云服务器详细过程
最近突然想使用下服务器,为后续工作准备,作为之前Linux都没有玩过的我感觉很费劲,所以就是无数次的百度,最终将服务器搭建好了:期间整理了一些资料,和过程上也做了些笔记,这里和大家分享下,希望对和我一 ...
- RHEL 5搭建Samba服务器详细过程
RHEL 5下Samba的搭建相对于其他系统来说是比较轻松的,下面就对RHEL 5下Samba的搭建过程做一简单的描叙,并且与其它系统的Samba服务器的搭建进行一下简单的比较. 在RHEL 5操作系 ...
- Linux服务器ldap启动,linux搭建ldap服务器详细步骤
ldap这种原始的服务器搭建起来比较复杂,同时它也是CE必考的(客户端的搭建). 1.安装openldap-servers软件包 2.查看ldap模板文件的存放位置: 3.拷贝ldap模板文件到配置文 ...
- 搭建SVN服务器详细过程 及 使用方法 Windows端
第一:下载 服务器安装程序下载地址: https://www.visualsvn.com/server/download/ SVN是一个版本管理系统,注意它是有中心化的.分为SVN客户端.SVN服务器 ...
最新文章
- 将图片(路径)转换为Base64 和 将base64转换为file类型
- dns服务器在电脑上有什么作用,DNS服务器是什么 DNS服务器的作用有哪些【详解】...
- Java java.lang.SecurityException: Prohibited package name
- matlab圆形器件,计算围绕点+ Matlab的圆形箱
- 贝叶斯算法伪代码_字节跳动算法面经
- 玩转大数据系列之一:数据采集与同步
- 为什么自建深度学习机器?因为比AWS便宜10倍啊!
- 字节跳动斥巨资开发出《Python知识手册》
- windows 全系列电脑加速,告别电脑“卡”的时代
- 脉冲经过高通和低通滤波器后的波形
- 阿里云直播生成推流和播流地址类
- 备份 二进制备份MySQLdump 增量备份 xtrabackupex
- Outlook账号被封?别慌,一步步教你怎么申诉
- bootstrap-列表样式
- 做你热爱的事情,35岁绝对不是问题
- python做用友财务报表_用友财务软件怎样生成财务报表?
- 网络传输介质 通信中的有线介质:双绞线、同轴电缆、光纤 引导性传输介质
- vue项目接入腾讯im
- 简述适配器的概念、作用以及主机适配器的概念
- 个人博客【页面插件集成】---学习09