文档章节

ngrok内网穿透服务部署记录

曾建凯
 曾建凯
发布于 11/07 01:36
字数 937
阅读 1760
收藏 73

ngrok,一个用于实现内网穿透服务,golang写的,已经很久远的一个东西了,可自己部署的版本最后一个版本是1.7.1,很久也没更新了,但他还是比较稳妥的,基于自己生成openssl证书来编译生成服务器端和客户端,还是具有一定程度的安全性。

一年前,其实已经部署起来了,还专门在码云上fork github的源码,将部署生成的脚本做了一个分支:https://gitee.com/janpoem/ngrok-fork。最近因为要大量迁移主机,所以需要重新配置一次,因此这里就作为一个记录吧。

特别说明,基于他已经不会再更新了,所以还是不要用于正式发布的环境,开发环境使用,完全足够(一年下来,非常稳定,连重启都没试过)。

安装go1.7.6

首先,最后这个版本的ngrok,必须使用go1.7.6(1.7的last版本),下载地址:https://dl.google.com/go/go1.7.6.linux-amd64.tar.gz。然后在你的linux上部署go,嗯,部署go不用我再写说明了吧,go可能是这世上最容易部署的了。

好吧,还是写写,免得自己下次配置的时候忘记了:

tar zvxf go1.7.6.linux-amd64.tar.gz
mv go /usr/local/go1.7.6
mkdir /usr/local/gopath/go1.7.6
unlink /usr/bin/go  # 如果你的机器上装了一个版本的go
ln -s /usr/local/go1.7.6/bin/go /usr/bin/go  # 先ln上,搞完再恢复就好,没后遗症
nano ~/.bashrc

修改 ~/.bashrc 文件,添加,或者暂时先改为如下:

export GOPATH=/root/gopath/go1.7.6
export GOROOT=/usr/local/go1.7.6

然后,更新一下

source ~/.bashrc

构建ngrok

然后,开始使用 ngrok-fork 的脚本,基于他不再更新了,所以我已经把自己的脚本分支作为默认分支了。

git clone https://gitee.com/janpoem/ngrok-fork.git
cd ngrok-fork

修改编译的配置,可以有两个选择:

1. 直接修改 script/predef.sh

2. 创建 user 目录,cp script/predef.sh user/my.sh ,修改my.sh

特别需要填写 NGROK_DOMAIN ,也即用于作为内网穿透服务的域名。比如你希望以:xxx.my.example.com的方式访问自己的PC的话,则 :

NGROK_DOMAIN="my.example.com"

其他需要修改的就是端口号:

DEPOLY_HTTP_ADDR=":8081"   # http 的端口号
DEPOLY_HTTPS_ADDR=":8082"  # https 的端口号
DEPOLY_TUNNEL_ADDR=":4443" # 本机到服务器的(隧道)端口号

ok,配置好,ngrok.sh支持以下参数:

./ngrok.sh server  # 生成2048 bit ssl证书(如果已经执行过,并且存在ssl证书,则不会重新生成),并构建 ngrokd 
./ngrok.sh client  # 生成客户端,出于某些原因,默认是只生成windows_amd64版本
./ngrok.sh service # 生成ubuntu的 service 配置
./ngrok.sh on      # 服务启用自动启动
./ngrok.sh off     # 服务停用自动启动

很简单,很弱智吧。然后进入 bin 目录,打包一下 windows_amd64 就可以分发出去了。

打包指令:

7z a w64.7z windows_amd64

什么,你问怎么启动?

service ngrok start
service ngrok stop
service ngrok status

配置nginx

最简配置:

server {
        listen          80;
        server_name     *.my.example.com;

        location / {
                proxy_set_header X-Real-IP  $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host:8081;
                proxy_redirect   off;
                proxy_pass       http://127.0.0.1:8081;
        }

}

美中不足的是,本地的PHP的话,HTTP_HOST还是会显示8081端口,现在上网似乎只找到双ip下的解决方案,我记得一年前似乎解决了这个问题,但现在已经完全不记得了(以后想起来再更新)。也罢,到此为止吧,留个记录,以防下次到处找资料。

© 著作权归作者所有

共有 人打赏支持
曾建凯
粉丝 327
博文 61
码字总数 96819
作品 0
广州
技术主管
私信 提问
加载中

评论(16)

叫我刀刀
叫我刀刀
国家不是不让用这些东西吗 ?
张婉玲
张婉玲
谢谢分享
np小强
np小强

引用来自“_vince”的评论

引用来自“np小强”的评论

用过一段时间,部署过程的痛苦历历在目。
我是用docker 部署的,有镜像直接用,不过http请求可以,但是ssh不行,也很郁闷

@_vince 我现在用frp,简单方便
_vince
_vince
ngrok 部署后http请求可以正常,但是ssh tcp就不能链接知道什么问题呢?
_vince
_vince

引用来自“np小强”的评论

用过一段时间,部署过程的痛苦历历在目。
我是用docker 部署的,有镜像直接用,不过http请求可以,但是ssh不行,也很郁闷
dingdayu
dingdayu

引用来自“LootanHu”的评论

引用来自“曾建凯”的评论

引用来自“LootanHu”的评论

引用来自“LootanHu”的评论

更好用的内网穿透软件,推荐 https://github.com/fatedier/frp

引用来自“曾建凯”的评论

mark了,回头再看。不在码云,差评
当然码云上也有。

那你应该贴码云的地址,吼吼,开玩笑
[root@svn-test MySQL80]# rpm -ql frpc
/etc/frp/frpc.ini
/usr/bin/frpc
/usr/lib/systemd/system/frpc.service
/usr/share/licenses/frpc-0.21.0
/usr/share/licenses/frpc-0.21.0/LICENSE
/var/log/frp
[root@svn-test MySQL80]# cat /usr/lib/systemd/system/frpc.service
[Unit]
Description=Frp fast reverse proxy Client Service
Wants=network-online.target
After=syslog.target network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini
TimeoutStopSec=5
Restart=always

[Install]
WantedBy=multi-user.target

[root@svn-test MySQL80]# ll /usr/bin/frpc
-rwxr-xr-x 1 root root 7602984 11月 2 09:51 /usr/bin/frpc*
[root@svn-test MySQL80]# file /usr/bin/frpc
/usr/bin/frpc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), stripped
[root@svn-test MySQL80]#

我不大喜欢go语言开发的东西。你看这文件就有7M多,用C、C++写编译出来估计就几百K。

@LootanHu 大小可以压缩的。
dingdayu
dingdayu
Ngrok是比较早期的项目了,后来作者2.0闭源做服务了,国内出了好几个类似的软件,最主要微信开发是这个功能是强需。现在已经不推荐用ngrok了,楼上的frp就是新项目中的优秀者。
np小强
np小强
用过一段时间,部署过程的痛苦历历在目。
LootanHu
LootanHu

引用来自“曾建凯”的评论

引用来自“LootanHu”的评论

引用来自“LootanHu”的评论

更好用的内网穿透软件,推荐 https://github.com/fatedier/frp

引用来自“曾建凯”的评论

mark了,回头再看。不在码云,差评
当然码云上也有。

那你应该贴码云的地址,吼吼,开玩笑
还有,frp 竟然自己就支持日志 logrotate 。

[root@svn-test MySQL80]# ll /var/log/frp/
总用量 100
-r--r----- 1 root root 0 10月 21 00:00 frpc.2018-10-21.log
-r--r----- 1 root root 776 10月 22 08:39 frpc.2018-10-22.log
-r--r----- 1 root root 776 10月 23 09:16 frpc.2018-10-23.log
-r--r----- 1 root root 0 10月 24 00:00 frpc.2018-10-24.log
-r--r----- 1 root root 2328 10月 25 09:33 frpc.2018-10-25.log
-r--r----- 1 root root 0 10月 25 23:59 frpc.2018-10-26.log
-r--r----- 1 root root 0 10月 27 00:00 frpc.2018-10-27.log
-r--r----- 1 root root 0 10月 27 23:59 frpc.2018-10-28.log
-r--r----- 1 root root 1724 10月 29 14:33 frpc.2018-10-29.log
LootanHu
LootanHu

引用来自“曾建凯”的评论

引用来自“LootanHu”的评论

引用来自“LootanHu”的评论

更好用的内网穿透软件,推荐 https://github.com/fatedier/frp

引用来自“曾建凯”的评论

mark了,回头再看。不在码云,差评
当然码云上也有。

那你应该贴码云的地址,吼吼,开玩笑
[root@svn-test MySQL80]# rpm -ql frpc
/etc/frp/frpc.ini
/usr/bin/frpc
/usr/lib/systemd/system/frpc.service
/usr/share/licenses/frpc-0.21.0
/usr/share/licenses/frpc-0.21.0/LICENSE
/var/log/frp
[root@svn-test MySQL80]# cat /usr/lib/systemd/system/frpc.service
[Unit]
Description=Frp fast reverse proxy Client Service
Wants=network-online.target
After=syslog.target network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini
TimeoutStopSec=5
Restart=always

[Install]
WantedBy=multi-user.target

[root@svn-test MySQL80]# ll /usr/bin/frpc
-rwxr-xr-x 1 root root 7602984 11月 2 09:51 /usr/bin/frpc*
[root@svn-test MySQL80]# file /usr/bin/frpc
/usr/bin/frpc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), stripped
[root@svn-test MySQL80]#

我不大喜欢go语言开发的东西。你看这文件就有7M多,用C、C++写编译出来估计就几百K。
自建ngrok实现内网端口映射

本文转自:自搭Ngrok实现树莓派内网穿透,有删改。 如果把花生壳类比为使用别人搭好的ss服务,那么自建Ngrok就是使用自己的ss服务,可见自搭Ngrok的优势不言而喻,流量费用十分经济,速度,稳...

blackfoxya
09/17
0
0
ngrok服务安装笔记

ngrok目前只开源1.x版本,最新的是1.7,使用下来发现比花生壳内网版要稳定和好用得多,重要的是ngrok支持mac和Linux平台,很是好用。先前参考JerryQu的博文搭建 ngrok 服务实现内网穿透进行部...

侠云
2015/10/22
0
0
内网穿透神器:Ngrok在支付中的正确使用姿势

前言 随着互联网的发展,无论是web服务还是移动APP越来越多的都集成了第三方支付(支付宝、微信、银联)。通常作为服务提供方,支付成功以后都会有一个后端回调URL来通知是否调用者是否支付成功...

小柒2012
06/06
0
0
CentOS7搭建ngrok服务器

CentOS7搭建ngrok服务器 会飞的污熊2017-12-302 阅读 web ngrok是一个反向代理,它能够让你本地的web服务或tcp服务通过公共的端口和外部建立一个安全的通道,使得外网可以访问本地的计算机服...

会飞的污熊
2017/12/30
0
0
Ngrok内网穿透服务搭建

> 第一次发个博客好激动啊,总之(@¥%#¥%¥#@……#¥……%@#%¥&%……&¥%……!#¥#%%¥@……%¥&%……*@#%@!#¥@!¥#!¥#!……此处省略99999字)对你们深深的思念。好了,废话不多说...

chen松灿
2017/12/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux虚拟机安装VmwareTool

1.点击虚拟机: 2.点击安装Vmware-Tools,出现如下界面,将圈起来的拖动到桌面 3.接着打开终端,执行解压缩命令 tar -xzv -f VMwareTools-10.2.5-8068393.tar.gz 这个后面的VMwareTools-10.2....

陈刚生
16分钟前
0
0
Java学习笔记(1) --JSE 、JEE、 JME三者的区别

java SE : java standard edition , JSE。它允许允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的java应用程序。 java SE包含了java Web 服务开发的类,并为java platform ,e...

hellation_
18分钟前
1
0
kafka 环境配置

https://www.cnblogs.com/fly-piglet/p/7762556.html

steel7c4
22分钟前
0
0
关于人工智能的思考

像人类一样可以思考,可以创造的人工智能会出现吗? 个人认为:会出现。但是出现的时间,取决了于硬件架构,和运算架构实现的时候。原因在于,人类智能可以出现,机器智能为什么不可以呢,不...

janl
23分钟前
0
0
破界!Omi生态omi-mp发布,用小程序开发生成Web

omi-mp 是什么 Omi 框架是微信支付线研发部和 AlloyTeam 开源的通用 Web 组件化框架,基于 Web Components,用来开发 PC、手机浏览器或者微信、手Q webview 的 Web 页面。自今年5月开源以来,...

腾讯开源
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部