使用Ngrok将本地服务映射为公网服务
这篇文章将为大家介绍ngrok,如何安装,配置以及在什么场景下需要使用ngrok。在没有使用过Ngrok之前,您可能会遇到过这样一些情况
- 你需要向客户演示你们正在研发的项目,所以你要求开发人员帮助你,在你的资源有限的笔记本电脑上部署一套用于给客户演示的环境。当下一次另一个同事需要去为客户演示的时候,同样的事情又要重做一遍。
- 您如果作为一个移动应用的后端服务开发者,与移动应用的前端开发者组成一个远程团队。你需要帮助前端开发者,在他的网络内部署一套用于测试的环境。由于前端开发者不具备后端技术栈,所以你们之间关于后端测试环境的沟通成本极高。
所有的这一切问题,只要您有一个固定的公网ip就可以解决了,将后端服务暴露在公网ip上,在互联网的任何位置都可以被访问到。但是我们都知道固定的公网ip价格是很贵的,根据带宽的不同,每年的费用从万元到几十万元不等。如果只是为了演示、测试、及研发环境等网络共享的问题,完全没有必要申请固定的公网ip。
那么有没有什么替代的方案呢?当然就是我们这篇文章的主角:Ngrok。
一、什么是Ngrok?
Ngrok是Alan Shreeve开发的应用程序,使开发人员可以将其本地开发服务公开到Internet上。它会创建一条通往本地开发服务器的网络,并生成两个随机的子域名-一个http
一个是https
。使用这些生成的域名地址,只要本地服务保持正常运行,您就可以通过Internet从任何地方访问本地开发的应用程序。
二、如何使用ngrok
?
使用ngrok
非常简单。
- 设置与安装
- 配置
ngrok
- 启动网络服务
1.设置和安装
要开始使用ngrok
,我们必须在提供ngrok服务的网站注册一个帐户ngrok
。注册后到仪表板页面。根据您的操作系统下载正确的软件包。
对于Windows:下载zip并解压缩可执行文件并运行它。要让ngrok
命令在系统内任何位置访问,可以使用下面方法
- 将可执行文件ngrok.exe移至C:Windowssystem32ngrok.exe
- 添加环境变量(在Windows徽标旁边的搜索栏中搜索“为您的帐户编辑环境变量” =>双击“用户变量”下的“您的用户名”的路径=>单击“新建” =>添加路径C:Windowssystem32ngrok.exe =>单击“确定”。
对于Mac / Linux:-在终端上运行以下命令。
unzip /path/to/ngrok.zip
将ngrok文件移动到/usr/local/bin目录或根据你使用的shell将路径添加到到.bashrc
或.zshrc
。
2.配置并验证ngrok
下一步是使用您的ngrok
帐户验证您在系统上安装的ngrok客户端的可用性。
在终端/提示符下运行以下命令:
ngrok authtoken YOUR_AUTH_TOKEN
YOUR_AUTH_TOKEN是显示在仪表板上的令牌。这会将您帐户的auth_token保存到本地计算机中的.yml文件中。
3.启动网络服务
输入以下命令:
./ngrok http 3000
这个3000
是您的本地服务器运行的端口号,也就是你的本地服务的启动端口,根据你自己的情况使用命令启动。
通过运行此命令,您的终端提示应如下所示。
上图显示了可在其中访问应用程序的随机生成的子域URL,可以在公网上进行访问。此外,您还可以通过浏览器访问4040
本地端口服务的仪表盘,在这里您可以查看通过生成的子域发出的所有请求。
恭喜!!您已成功启动了ngrok
应用程序,提供公网服务访问。
- 区块链是什么,一文给您讲清楚
- ASP.NET MVC涉及到的5个同步与异步,你是否傻傻分不清楚?[下篇]
- 2017科技颠覆生活哪家强?
- 柯洁宣布复出,再次迎战AI!但对手不再是阿尔法狗……
- 【Scikit-Learn 中文文档】协方差估计 / 经验协方差 / 收敛协方差 / 稀疏逆协方差 / Robust 协方差估计 - 无监督学习 - 用户指南 | ApacheCN
- 先搞懂这八大基础概念,再谈机器学习入门!
- 人工智能化的传感器技术
- 带有CSS3的动画3D条形图
- 有故事的微信小游戏“跳一跳”
- 机器学习敲门砖:任何人都能看懂的TensorFlow介绍
- 跟小编来体验一下微信小程序
- DeepVO:基于深度循环卷积神经网络的端到端视觉里程计
- 是人工智障还是蹭热度?我一定是抱走了假的二次元老婆
- 重庆日报:丹妮拉·鲁斯认为人工智能是人类的助手
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL慢查询日志
- Pandas处理时间序列数据的20个关键知识点
- CentOS7下的LNMP环境搭建Dedecms网站
- 持久层框架JPA与Mybatis该如何选型
- 技术分享 | Online DDL 工具 pt-osc
- 基于hexo框架搭建个人博客【技术创作训练营】
- 对比讲解lambda表达式与传统接口函数实现方式
- 如何使用Java8 Stream API对Map按键或值进行排序
- TencentOS tiny RTOS快速入门
- Nginx用户认证与域名重定向
- LNMP架构介绍与搭建
- Mac 最新版Python3.7.4安装配置,设置默认python版本
- 15个应该掌握的Jupyter Notebook 使用技巧
- python 环境重启方法,系统环境变量配置后python生效设置方法
- 快速上手 WebAssembly 应用开发:Emscripten 使用入门