ngrok内网穿透服务部署记录

程序员修炼之路 2018-12-13 16:22:55 ⋅ 866 阅读

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.6export GOROOT=/usr/local/go1.7.6

然后,更新一下

source ~/.bashrc


构建ngrok

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

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

---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦




全部评论: 0

    我有话说:

    【开源资讯】JWCloud 专业版 v1.0.0 发布,基于 SpringCloud 研发的微服务框架

    简介 JavaWeb_Cloud 微服务平台是一款基于 SpringCloud 框架研发的分布式微服务框架,主要使用技术栈包括: SpringCloud、Vue、ElementUI

    你的老板逼你上微服务了吗?

    “ 这些年软件的设计规模越来越庞大,业务需求也越来越复杂,针对系统的性能、高吞吐率、高稳定性、高扩展等特性提出了更高的要求。   图片来自 Pexels可以说业务需求是软件架构能力的第一推动力,由于这些因素导致了软件架构思想和相关技...

    「推荐」通过API关实现微服务管控-限流,熔断和降级

      今天准备谈下基于API关来实现微服务治理管控中的服务限流,熔断和降级方面的内容。在前面谈微服务架构的时候也谈到过类似通过Hystrix,Sentinel来是服务限流熔断。包括也不断

    Apache APISIX 2.4 发布,云原生的微服务 API

    Apache APISIX 2.4 已经发布。Apache APISIX 是一个云原生微服务 API 关,它提供了高性能、安全、开源和可扩展的平台,基于 Nginx 和 etcd,支持动态路由和插

    CKEditor 5 v26.0.0 发布:具有可扩展的构建、部件样式和注释指南

    CKEditor 5 v26.0.0 已经发布,本次更新包括支持创建一个定制的编辑器构建、Mac上的按键管理、设计部件、编辑器占位符和一组关于使用协作特性注释的新指南等内容。 通过 DLL

    Proxy-Go v10.2 发布,新增自由指定出口 IP!

    Proxy 是 golang 实现的高性能 http、https、websocket、tcp、udp、socks5 代理服务器,支持正向代理、反向代理、透明代理、穿透、TCP/UDP 端口映射

    「转载」微服务分布式架构中,如何实现日志链路跟踪?

    背景 开发排查系统问题用得最多的手段就是查看系统日志,在分布式环境中一般使用ELK来统一收集日志,但是在并发大时使用日志定位问题还是比较麻烦,我们来看下面的图     上图一个用户请求一个url,整个链路如图,每个处理层...

    「轻阅读」移动端事件穿透的原理与解决方案

    本文将带你了解事件穿透及如何在实际项目中选择合适的方案解决事件穿透问题。

    SpringBoot+zk+dubbo架构实践(四):sb+zk+dubbo框架搭建(附源码GitHub地址)

    本篇案例模拟了一个provider服务提供方和PC、Web两个服务消费方附GitHub源码......

    kongx v2.0.0 发布,关 kong 可视化管理平台

    kongx v2.0.0 已经发布。kongx是关 kong 的可视化界面管理平台(参考 konga 的部分界面布局方式),能够集中化管理应用不同环境的关配置,提供同步各环境的关配置功能,并且

    前端实战篇-聊聊JavaScript

    内存生命周期、分配存、使用分配的内存(读与写操作),当应用程序不再需要时,释放掉已分配的

    什么是微服务?什么是中台?阿里的中台战略?

    服务架构将单体应用,按照业务领域拆分为多个高聚低耦合的小型服务

    GitHub竟然有基于SpringCloud的“约车”项目,附源码

    有人问小编有没有开源的“约车”项目源码,并且最好是采用微服务架构设计,这样可以投入技术团队进行二次开发。 小编在GitHub上还真找到了这个项目,接下来一起看一看吧! 项目介绍 该项目是一款标准且

    精品推荐:Nacos 发布 v0.6.0 版本,支持 Dubbo 和 Docker 部署

    阿里巴巴微服务开源项目Nacos发布 v0.6.0 版本,该版本开始支持 Dubbo的服务发现和配置管理,并针对 Docker 部署提供了官方的 Docker 镜像,以及优化了Nacos 控制台的

    京东技术:Web自动化测试 | 充分利用浏览器记录的信息

    Web页面的展示依托于浏览器,当用户请求一个URL的时候,浏览器会记录下从HTTP请求到页面渲染成功这个过程的所有信息。

    服务架构学习笔记:gRPC Spring Boot Starter 2.2.0 发布,及使用步骤

    gRPC Spring Boot Starter 项目是一个 gRPC 的 Spring Boot 模块。嵌一个 gRPC Server 对外提供服务,并支持 Spring Cloud 的服务发现

    使用分支进行开发和部署

    开发协作更加高效,而且也为系统升级和问题修复的部署...

    Web前端:单页应用部署时缓存策略

    前端网站采用Vue + Nginx的方式进行生产环境部署。发现登录系统之后,出现页面空白问题,刷新几次后显示正常。