2020-02-11 23:25:40

使用ngrok进行内网穿透教程,将本地映射到互联网上可用于微信平台调试等


使用ngrok进行内网穿透教程,将本地映射到互联网上可用于微信平台调试等

前言

前不久我的网站对接了微信公众号平台,在调试的时候很不方便,难道要把代码部署到服务器上测试?这不太可能,甚至还可能影响线上正常的系统,所以就使用了ngrok提供的内网穿透服务,将自己的电脑映射到互联网上,今天我就分享一下如何使用ngrok进行内网穿透,将自己的电脑映射到互联网上。

注册ngrok

首先,你需要到ngrok上注册一个账户,非常简单,进入首页以后右上角点击“SIGN UP →”进行注册,注册好以后登陆你的ngrok账户,将会跳转到https://dashboard.ngrok.com/get-started

ngrok dashboard

查看自己的令牌

登陆成功以后会跳转到“dashboard”,在这里你可以看到你的令牌,就是页面上的“Connect your account”这里的:「$ ./ngrok authtoken 1WNQVxkxraY7VF9boGWjuyQJtRpG4FMzFAYL69XGhJtoHaXT」这里的48位字符串就是你的令牌。你要和密码一样保存好哦。

下载ngrok

你可以访问https://ngrok.com/download来下载ngrok,无论你是Windows、Linux、Mac、FreeBSD都可以找到对应的客户端,几乎所有常见的操作系统都会被支持,我的电脑是Mac,所以接下来的演示,我都是在Mac环境下,不过命令非常简单,其他操作系统都是一个意思的。

下载好ngrok以后,需要进行解压,Windows的解压就比较简单了,我就不说了;在Linux和Mac环境下,可以使用解压命令,假设你把下载的ngrok.zip放到了下载文件夹里,我的用户名是renfei,那解压的命令是:

unzip /Users/renfei/Downloads/ngrok.zip

启动ngrok

Windows使用的是命令行,Linux和Mac就在终端里输入命令,假设我们已经进入到解压后的位置。

连接到您的账户

这一步需要将你的账户和你的客户端进行连接,将您帐户的身份验证添加到ngrok.yml文件中,注意此处的48位令牌换成你的,命令是:

./ngrok authtoken 1WNQVxkxraY7VF9boGWjuyQJtRpG4FMzFAYL69XGhJtoHaXT
ngrok authtoken

启动ngrok,将端口映射到互联网

启动ngrok也非常简单,首先你要知道将哪个端口映射到互联网中,我这里演示的是8091端口,我的程序监听的是8091端口,命令是:

./ngrok http 8091

这时候显示了以下信息:

ngrok
  • Session Status:状态,online是在线

  • Account:账户,RenFei (Plan: Free)免费套餐

  • Version:版本,2.3.35

  • Region:区域,United States (us),美国

  • Web Interface:本地可视化监控界面,http://127.0.0.1:4040

  • Forwarding:对外暴露的地址,包括HTTP和HTTPS

来自互联网的访问

Forwarding:提供的地址就是互联网地址,通过这个地址就可以访问到你设置的本地端口,这里演示的是:http://5a8619f5.ngrok.io,需要注意的是,免费套餐的这个地址是随机的,每次启动都会变化,如果希望要一个固定不变的网络地址,就需要付费套餐了。当然你也可以增加一个subdomain参数尝试申请本次指定的域名,但不会一直保留给你,你需要每次都申请,例如我希望域名是renfei:

./ngrok http -subdomain=renfei 8091

Region:区域默认是美国,如果你需要其他区域的服务,可以在启动时增加一个region参数,例如我们申请要亚洲区域的服务:

./ngrok http -region ap 8091

支持的区域有:

  • us - United States (Ohio)

  • eu - Europe (Frankfurt)

  • ap - Asia/Pacific (Singapore)

  • au - Australia (Sydney)

  • sa - South America (Sao Paulo)

  • jp - Japan (Tokyo)

  • in - India (Mumbai)

Web Interface:提供的本地可视化监控界面,http://127.0.0.1:4040,可以更详细的监控网络请求的详细交互内容:

ngrok Web Interface

更多信息

上面我介绍的教程基本能满足大部分需求,如果你还希望有其他的设置和功能,可以参考官方文档:https://ngrok.com/docs


商业用途请联系作者获得授权。
版权声明:本文为博主「任霏」原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://www.renfei.net/posts/1003318
评论与留言
以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。

本站有缓存策略,时间约2小时后能看到您的评论。本站使用自动审核机制,如果您的内容包含广告/谩骂/恐怖/暴力/涉政等不和谐内容将无法展示!


本站有缓存策略,时间约2小时后能看到您的评论。本站使用自动审核机制,如果您的内容包含广告/谩骂/恐怖/暴力/涉政等不和谐内容将无法展示!

关注任霏博客
扫码关注「任霏博客」微信订阅号
微博:任霏博客网
Twitter:@renfeii
Facebook:任霏
最新留言 这个恶意攻击是只有服务器安装有Redis 才会遭受攻击吗 我用电脑和手机分别访问了45,133,203,192 这个ip地址,这个ip地址对应的服务器是不是只托管了脚本,提供木马自动去下载,并没有任何攻击性的东西,是这样的吗? 你好,我这边想问下,镜像服务启动了,该连接哪个数据库呢? 不更新? 优先级低的并不代表一定要等到优先级高的运行完才能运行,只是cpu分配的资源少了而已。 /lib64/ld-linux-x86-64.so.2: No such file or directory 报了这个错误,怎么解决呢 对于一个布道 DevOps 多年的选手来讲,看到这个报告,还是想继续布道布道。虽然是各种对比哈,但是我感觉与 DevOps 太像了(可能是职业病犯了哈)。首先声明本人不是GitLab 用户(因为不免费,没法薅羊毛啊),本人是 GitHub 忠实用户。 首先,你这是田忌赛马的对比,中文对比一事,着实有点可笑 1 土生土长和外来户能立马拉到同一个起跑线上吗? 2 一个真正的开发者应该去提升自己的英语能力,而不是拿全部是中文文档说事。大家都知道现在开源非常热,开发者是开源的主力军,如果要贡献优秀的开源项目(诸如Linux 内核,Kubernetes),英语就是个硬门槛。如果我是你,我倒希望公司内部的系统是英文的,最起码能让我锻炼英语,在看开源项目文档的时候不至于看不懂,提 PR 的时候不至于提交代码的内容描述不清楚而没法被 Merge。 其次,阿里云效、Coding 大家都知道背后站的是谁,很容易造成厂商绑定,现在很多企业都希望不要被厂商绑定。 再者,有一个点需要明白,GitLab 是一个 DevOps 平台,什么叫做 DevOps 平台(DevOps 走到现在,确切的说应该叫做 DevSecOps)?就是覆盖了软件开发生命周期全阶段的,从项目管理到代码托管到安全再到日志监控、甚至包含现在的云原生能力。不仅仅是说一个 CI/CD 就能概括的了的。这一点是 DevOps 布道的真正误区,我见过太多了,我在这儿再布道一哈,CI/CD 不等于 DevOps,他只是 DevOps 落地实践的核心能力。仅凭借一个 CI/CD 能有现成模版就判断出哪个好坏,过于牵强了吧。相信大家真正到项目用的时候,模版是满足不了要求的吧,毕竟大家都很特性化。 最后,还是一个很热的话题,开源,open source。GitLab 是开源的,Coding 和 云效这方面我没看到相关的开源内容(可能是我孤陋寡闻)。大家可以看看国内有多少用 GitLb 的,GitLab 的 CE 版,然后私有化部署,就是很多公司的代码托管 + DevOps 解决方案。 个人愚见,做一些对比报告的时候,还是先需要明白这个产品的定位,去深入挖掘一些真正有意义的对比,这样的对比报告才能有意义。作为一个常年写博客、文章的人来说。你写的每个字、每篇文章,你要想到你的思想会影响到别人。有可能因为你的片面之词,让别人错失一些学习的好机会。 docker run 那一长串后,出来一个字符串,然后去 docker containers 下面看 显示 exited(1);logs 下就一行错误 initdb failed 感谢🙏,第一个问题是空格的问题应该,我逐字敲完后可以构建了.第二个问题是我docker环境的问题,docker更新为最新版后需要重置配置文件.现已经正常使用,再次感谢您的分享和您的细心解答,期待下次相遇😄 还有一个问题可以请教下吗?就是我在容器里建文件夹没有权限,su root后密码不知道是多少,sudo mkdir xxx 提示我,没有sudo命令,请问有好的解决方法吗?谢谢解答 -v 后面可以指定文件吗 我的也是报错,还有。我执行了这个:@localhost kingbase-es-v8-r3-docker % docker run -d --name kingbase -p 54321:54321 -e SYSTEM_PWD=SYSTEM -v /opt/kingbase/data:/opt/kingbase/data -v /opt/kingbase:/opt/kingbase/Server/bin kingbase:v8r3 docker: 'run -d --name kingbase -p 54321:54321 -e SYSTEM_PWD=SYSTEM -v /opt/kingbase/data:/opt/kingbase/data -v /opt/kingbase:/opt/kingbase/Server/bin kingbase:v8r3' is not a docker command. See 'docker --help' 麻烦帮忙看下,是不是我写的命令有问题,还是版本问题,谢谢啦