内网穿透工具Ngrok本地搭建记录

说明

本文主要是将服务器接收到的请求转发到本地服务器,这样便于调试。

网上公开的域名转发工具,百度上搜到的工具: 例如 sunny-ngrok 等,有些说是 免费注册 但不太稳定,而且安装方法要加QQ群收费等。

所以,最终还是自己搭建转发服务器的方式比较靠谱。

那么,寻找搭建自己转发服务器的方法,找到这篇文章:

最接地气的Ngrok服务器搭建教程
https://www.jianshu.com/p/f5c2a55e77bd

在这个基础上稍为修改,得到的本篇博客。

主要步骤

本文是在 centos 服务器安装测试的,测试成功

一,安装git和go

yum install gcc -y
yum install git -y
yum install mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386 -y

二,下载源码

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

三,生成证书(默认的证书是 ngrok.com,我们需要改成 abc.com)【这里的 NGROK_DOMAIN 环境变量存在问题。因为没有用到 https 所以不管他】
生成:

cd ngrok  

mkdir cert 

cd cert

export NGROK_DOMAIN="abc.com"

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 device.key 2048

openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr

openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

替换(提示overwrite输入y)

cp rootCA.pem ../assets/client/tls/ngrokroot.crt

cp device.crt ../assets/server/tls/snakeoil.crt

cp device.key ../assets/server/tls/snakeoil.key

四:生成服务端与客户端
切换回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

启动服务器:

./bin/ngrokd -domain="abc.com" -httpAddr=":8080"

外网的服务器开放端口 8080,需要在 阿里云 【安全组中开放此端口】 其它配置:

-httpAddr=80 此配置用来指定映射域名http访问的端口 默认80

-httpsAddr=443 https的访问端口 默认443

-tunnelAddr=4443 客户端连接的端口 默认4443 需要在 阿里云 【安全组中开放此端口】

五:客户端配置与连接
执行生成客户端后,根据不同平台客户端存在不同的文件夹:

Mac os 
bin/darwin_386 (32位)
bin/darwin_amd64 (64位)

windows
bin/windows_386
bin/windows_amd64

进入对应的文件夹,通过sz或者ftp等方式将ngrok下载到你需要使用客户端的电脑中

在客户端中,新建配置文件ngrok.cfg

<!--配置服务端连接地址,也就是基础域名。端口则与服务端-tunnelAddr配置相同-->
server_addr: "abc.com:4443"  
trust_host_root_certs: false

运行客户端

./bin/ngrok -config=ngrok.cfg -subdomain=ngrok 8080

-subdomain用来指定域名的前缀(也就是映射域名的前缀),如上设置ngrok,当访问ngrok.abc.com时,ngrok服务端接收到请求后,便会将客户端http相应返回给访问端。80用来指定本地http服务的端口

【需要在域名解析中添加子域名 ngrok.abc.com, A 记录 对应到服务器上面 】

问题及解决

Tunnel ngrok.xxx.cn:8080 not found

需要写成具体的域名

./ngrokd -domain="xxxx.cn" -httpAddr=":8080"

Invalid Host header
【问题原因】本地启用了一个 vue 的项目,占用了 8080 端口,造成转发不过来。

当时还以为是 Java 的 SpringBoot 拦截了这个请求呢~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值