专栏首页JAVA葵花宝典【docker系列】搭建Ngrok实现内网穿透

【docker系列】搭建Ngrok实现内网穿透

先来一张效果图镇楼

内网穿透是什么?

内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。就是说映射端口,能让外网的电脑找到处于内网的电脑,提高下载速度。不管是内网穿透还是其他类型的网络穿透,都是网络穿透的统一方法来研究和解决。

什么场景下会使用到内网穿透?

上面说的比较官方,我们还是来聊聊实际应用场景,比如你接了一个外单系统,做完了以后老板想验货,这时候大部分无非就2种做法,开远程让他看/自己部署到公网的服务器让别人看,两种都很麻烦,费时费力,那么我们做一个内网穿透,直接让别人通过外网域名访问你的本地机器,岂不是很简单。

还有作为开发人员来讲,用内网穿透来做本地调试还是挺方便的,现在第三方对接都是需要公网域名的,比如微信的一些接口,不用内网穿透将会花费很多的时间和精力在调试上。

准备工作

  • 一台公网服务器
  • 自己的域名,并解析出来一个ngrok服务器的子域名,小编这里用的是ngrok.javakhbd.com

PS:本文基于腾讯云

拉取镜像

docker pull hteen/ngrok

执行编译命令,编译服务端和客户端

docker run --rm -it -e DOMAIN="ngrok.javakhbd.com" -v /data/ngrok:/myfiles hteen/ngrok sh /build.sh

执行成功截图

此刻在/data/ngrok目录下面,你会看到以下文件:

我们生成的客户端和服务器在/data/ngrok/bin目录下

bin/ngrokd                  服务端
bin/ngrok                   linux客户端
bin/darwin_amd64/ngrok      osx客户端
bin/windows_amd64/ngrok.exe windows客户端

启动服务器端

由于之前的命令是编译命令并不是启动容器,所以我们开始根据刚才下载的镜像来启动容器

docker run -idt --name ngrok-server -v /data/ngrok:/myfiles -p 80:80 -p 443:443 -p 4443:4443 -e DOMAIN='ngrok.javakhbd.com' hteen/ngrok sh /server.sh

如果是这些宿主端口被nginx等占用可以换以下宿主端口,然后自己做映射即可。

客户端连接

这里以window客户端为例。

先将服务器上编译好的客户端下载下来。

创建一个文件ngrok.cfg,作为配置文件,里面配置如下:

server_addr: "你的ngrok域名:4443端口"
trust_host_root_certs: false

配置文件弄好以后虽然也能通过命令启动,但是总归太麻烦了,我们把命令放到start.bat可执行文件,这样每次要用到内网穿透的时候双击就可以了。

ngrok.exe -config  ngrok.cfg -subdomain ceshi localhost:8081

见证效果

话不多说,直接上动图吧!

- End -

本文分享自微信公众号 - JAVA葵花宝典(Javakhbd)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-10

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python操作json(一)

    Python 操作json Json语法规则: 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 Json字符串本质上是一个字符串,用单引号...

    用户2398817
  • Python-socket总结

    什么是socket所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。

    用户2398817
  • Python35 events(事件)

    队列的作用: 1、解耦:避免两者之间的过度依赖,以免其中一方出现问题,另一方不能再执行。 2、效率:增加数据处理的效率。

    用户2398817
  • 用python写的agent

    #/usr/bin/python #Filename:agent.py #siyu@2012-6-29

    用户2398817
  • python安装、数据类型和变量

    2018.06.06 1.1为什么要学习python 学习方法: 边看边做不能只看不做 笔记要记录详细

    用户2398817
  • python编码转换实验

    Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56) 

    用户2398817
  • 通过特征去样式化识别Instagram过滤图像(CS CV)

    当加入小扰动(如高斯噪声)时,深度神经网络表现出较差的泛化能力,然而很少有人研究它们对更自然的图像转换(如照片过滤器)的鲁棒性。这篇文章研究了常用的预训练模型如...

    DANDAN用户6837186
  • FLEX 3 有关视频加载处理1

    1. 创建一个NetConnection 对象,它的作用是连接到远程服务器,调用命令,播放视频

    用户2398817
  • Python -- str 类

    def capitalize(self):   # 全部字母变小写只有首字母变大写;

    用户2398817
  • python3编译成pyc文件

    pyc是编译py之后生成的本地文件。一般当我们想发布系统的时候不想让别人看到源代码,所以要提前生成pyc文件。

    用户2398817

扫码关注云+社区

领取腾讯云代金券