ngrok内网穿透服务部署记录


声明:本文转载自https://my.oschina.net/janpoem/blog/2872708,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

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下的解决方案,我记得一年前似乎解决了这个问题,但现在已经完全不记得了(以后想起来再更新)。也罢,到此为止吧,留个记录,以防下次到处找资料。

本文发表于2018年11月07日 09:00
(c)注:本文转载自https://my.oschina.net/janpoem/blog/2872708,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1898 讨论 0 喜欢 1

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1