【群友】Ngrok让你的本地Web应用暴露在公网上

1.Ngrok介绍

Ngrok是一个反向代理,通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道。Ngrok可捕获和分析所有通道上的流量,便于后期分析和重放。简单来说,利用 Ngrok可以通过外网来访问部署在本地服务器的网站,它还提供一个Web管理页来监控HTTP通信报文,方便程序员发现问题、开发调试。另外Ngrok还支持TCP层端口映射,不局限于某一特定的服务。支持Mac OS X,Linux,Windows平台。

Ngrok 官方网站:https://ngrok.com/

Ngrok 开源地址: https://github.com/inconshreveable/ngrok/

2.应用场景

2.1.WEB开发

作为一个Web开发者,有时候会需要临时地将一个本地的Web网站部署到外网,供他人体验评价或协助调试。传统的做法是利用花生壳等动态域名或自行搭建VPN做端口映射,而利用 Ngrok几条命令就搞定。

2.2.微信开发

在做微信开发的时候,需要经常用微信客户端调试系统服务功能,但是在开发阶段服务端程序一般是运行在本地服务器上。这样,微信在公网上在是没有办法访问到本地服务器资源的。解决微信本地开发的关键就是能够将本地服务IP映射到公网上,所以Ngrok对于在本地进行微信开发很有作用。

2.3.TCP端口转发

TCP端口转发,这意味着可以在外网SSH到本机了,当然外网端口是随机分配的。

3.简单使用

实验环境:Windows7、Ngrok 2.1.3

Step1:首先去Ngrok官网去下载最新版本客户端。Windows版本下载解压后只有ngrok.exe一个文件,暂将其放置在D盘根目录下。

Step2:首次使用Ngrok服务需要先为本机安装authtoken。在Ngrok官网注册一个账号,在Auth菜单下获取官方分配的authtoken。(该步可省略,但是未注册用户不具备自定义域名等高级功能)

Step3:安装authtoken,按下Win+R键-->运行-->执行cmd。cd进入到ngrok.exe的根目录下,输入如下指令:

ngrok authtoken <YOUR_AUTHTOKEN>

Step4:通过上述几步,现在就可以创建一个安全隧道,将本地服务IP映射到公网上。执行下面命令就可以为本机`localhost:8080`地址分配一个Ngrok官网下随机二级域名。

ngrok http 8080

Step5:从上图Ngrok服务开启后的状态可以看出` http://7a65105c.ngrok.io`就是生成的公网域名。但有个问题,它是随机生成的,每次启动Ngrok服务都会重新生成,在微信开发的时候很不方便。Ngrok提供了解决方案,允许绑定自定义二级域名和顶级域名(收费功能),只要在ngrok.exe的根目录下执行如下命令:

ngrok http -subdomain=[二级域名] [端口]   //绑定Ngrok二级域名ngrok http -hostname=[顶级域名] [端口]    //绑定自定义顶级域名

Step6:打开web界面在`http://localhost:4040`检查和重复请求,监控HTTP通信报文。

关于 Ngrok 就讲到这了,本人也是初次使用,很多高级功能未涉及。如果各位看官有需要请移步官方文档。

4.国内Ngrok服务

Ngrok是非常好的工具,但是它的服务器在国外,国内存在访问稳定性差、速度慢等问题。这个给国内的程序员带了很多不便。好在Ngrok是个开源项目,有些前辈或公司在Ngrok项目基础之上做了改进,提供了功能相似的国内Ngrok服务。

相关推荐:

  1. Sunny-Ngrok内网转发
  2. Ngrok国内免费服务器——糖果科技
  3. NATAPP 基于ngrok高速内网穿透服务
  4. pc5s - 互联网到个人电脑的反向代理

其具体使用规则很简单,并且都有详细的文档或视频说明。

5.参考与扩展

[1] l631068264,Windows 下 配置 ngrok ngrok使用教程

[2] 林泳坛,关于Ngrok的一些思考

[3] 攀哥, 自建Ngrok服务与使用方法

原文链接:http://www.cnblogs.com/gao-yang/p/5677340.html

原文发布于微信公众号 - 我为Net狂(dotNetCrazy)

原文发表时间:2016-11-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(68)-微信公众平台开发- 资源环境准备

前言: 本次将学习扩展企业微信公众号功能,微信公众号也是企业流量及品牌推广的主要途径,所谓工欲善其事必先利其器,调试微信必须把程序发布外网环境,导致调试速度太慢...

27560
来自专栏JAVA高级架构

一个分布式服务器集群架构方案

68420
来自专栏琯琯博客

awesome-sysadmin-cn资源

系统管理员 资源列表,内容包括:备份/克隆软件、云计算/云存储、协作软件、配置管理、日志管理、监控、项目管理 备份 备份软件 Amanda:客户端-服务器模型备...

716120
来自专栏听雨堂

用AutoHotKey建立自己的便签本

     如果要我选一个我最常用的windows程序,那一定是notepad了,事实上,我把它的快捷方法放到快速启动栏以便随时打开它。顺手记录各种东西:网址,关...

24280
来自专栏Jerry的SAP技术分享

C4C Product Price List的模型中和有效期相关的两个字段

SAP C4C的price list实例可以在工作中心Products,视图Price Lists里看到。

16770
来自专栏Rainbond开源「容器云平台」

【技能】学会了它,你就可以轻松泡妹子了!

16240
来自专栏Debian社区

Ubuntu Server自18.04 LTS开始不再提供32位镜像

2016年6月份Canonical公司在社区公布的草案,明确自Ubuntu 16.10开始逐步放弃32位支持,并在Ubuntu 18.10中彻底移除对32位架构...

13840
来自专栏醉程序

一个校园类微信公众平台

14530
来自专栏数据和云

故障恢复:从未知错误ORA-600 [3712]以猜测推理达成恢复

李真旭 Oracle ACE,云和恩墨技术专家 个人博客:www.killdb.com 在Oracle数据库的日常维护中,我们可能经常会遇到一些从未见过的错误,...

31260
来自专栏IT笔记

大型架构之科普工具篇

当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消息队列,作为抽象层,弥合双方的差异。“ 消息 ”是在两台计算机间传送的数据单位。消息可以...

58660

扫码关注云+社区

领取腾讯云代金券