基于腾讯云服务器centos7系统搭建ngrok内网映射

前文

最近在学习开发微信公众号,由于微信官方要求需要可访问的域名才能测试,使用他人的ngrok又时常掉线等各种原因,故搭建了个ngrok服务器作为个人测试用

1、此文用于个人笔记

2、不保证正确性(有些东西我自己还没摸索清楚)

3、欢迎指正

正文

1、域名问题:

自己去买个域名,并将一级域名解析到自己的服务器的ip下(域名解析各大云服务商都有提供)(xxx.cn)

ngrok作为测试使用,自然不可能使用一级域名,然后由于项目,或者未来需要使用,我们可以添加二级域名作为ngrok专用域名

(ngrok.xxx.cn),在未来使用时我们可能需要使用不同的前缀去区分项目,那么我们可以使用多项的三级域名(*.ngrok.xxx.cn)

2、搭建ngrok——安装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 -r git-2.16.2.tar.gz

3、搭建ngrok——安装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 -r go1.9.2.linux-amd64.tar.gz

#安装go语言的安装环境
yum install mercurial bzr subversion
#新建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

4、搭建ngrok——从git上下载ngrok、配置环境变量

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

export GOPATH=/usr/local/ngrok/  
export NGROK_DOMAIN="ngrok.xxx.com"   #这里写你自己的域名,不要前缀,比如www

5、搭建ngrok——生成证书

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

6、搭建ngrok——生成可执行的服务端ngrokd、客户端ngrok

# 以下操作需在ngrok目录下执行
# 生成服务端

make release-server

# 生成客户端(windows 64位,其他系统编译请自行百度)

GOOS=windows GOARCH=amd64 make release-client

7、搭建ngrok——启动服务端

cd /usr/local/ngrok/bin
./ngrokd -domain="ngrok.xxx.com" -httpAddr=":80" -httpsAddr=":8081" -tunnelAddr=":4443"

#-domain后面你上面写的域名  -httpAddr http端口  -httpsAddr https 端口 
#-tunnerlAddr 客户端端口,连接端口

#-如需后台运行
setsid ./ngrokd -domain="ngrok.xxx.com" -httpAddr=":80" -httpsAddr=":8081" -tunnelAddr=":4443"

8、启动客户端——命令启动

首先在客户端同级目录下创建ngrok.config文件,内容如下

server_addr: "ngrok.xxx.cn:4443"
trust_host_root_certs: false

启动

#目录下打开命令行

ngrok -config=./ngrok.config -subdomain=bg 8080

#这里subdomain后面的是二级域名前缀,你可以改,
#注意要在域名解析里添加二级域名解析

9、启动失败的原因

9.1、检查4443端口是否开启,如果没有开启的请开启4443端口,或者更换其他没有被占用的端口,重新启动服务端

9.2、检查域名是否正确解析到服务器ip下

9.3、centos7系统开启端口的方式和以前版本不同使用的是firewalld命令,具体操作自行百度

9.4、检查腾讯云安全组是否将ngrok端口过滤(默认不会,25端口默认禁用)

10、成功运行图

猜你喜欢

转载自blog.csdn.net/jiepan9178/article/details/81330823