ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名

2024-09-07 16:12

本文主要是介绍ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

当我们需要把本地开发的应用展示给外部用户时,常常会因为无法直接访问而陷入困境。

就为了展示一下,买服务、域名,搭环境,费钱又费事。

那有没有办法,让客户直接访问自己本机开发的应用呢?

这种需求场景这么多,当然有现成的技术 —— 内网穿透。

什么是内网穿透?

内网穿透是一种网络技术,它允许外部互联网用户访问部署在本地网络(内网)中的服务或设备。

通常,家庭或企业网络都位于内网,连接到外部互联网需要通过 NAT(网络地址转换)或者路由器来实现。

然而,由于内网中设备的 IP 地址通常是私有的,外部用户无法直接访问这些设备,这就带来了两个主要挑战:

  1. NAT 问题:内网设备的私有 IP 地址无法直接在互联网中使用,需要通过路由器将外部请求转发到内网设备。

  2. 动态 IP 地址:即使能够实现 NAT 转发,本地网络中的 IP 地址可能是动态的,每次重启设备时会发生变化,增加了管理和访问的复杂性。

常见的内网穿透解决方案

  1. 端口映射:通过在路由器上进行端口映射,将外部流量定向到内网中的特定设备。这种方法虽然可行,但通常需要配置路由器并且涉及安全风险,操作复杂。

  2. 第三方穿透工具:如 ngrok、frp 等工具通过云中转服务器,将本地服务映射到外部可访问的 URL,从而解决了复杂的端口映射问题。

反向代理技术

反向代理是内网穿透的核心技术之一。

反向代理服务器位于用户和内部服务器之间,接收外部请求后,将请求转发到内部服务器,再将响应返回给外部用户。

通过这种方式,反向代理隐藏了内部服务器的实际位置和架构,确保了内部网络的安全性。

现在,我们已经理解了内网穿透和反向代理的基础知识,接下来我将介绍一个强大的工具——ngrok,它能让内网穿透变得简单高效。

什么是 ngrok?

ngrok 是一个反向代理工具,它通过建立隧道,把你本地的服务映射到一个外部可访问的 URL。ngrok 通过其强大的功能,解决了传统内网穿透方式的复杂性和安全性问题。

通过 ngrok,开发者可以将本地运行的 HTTP 或 TCP 服务映射到一个公网可访问的 URL,从而让远程用户通过这个 URL 访问到本地服务。

ngrok 的主要功能

  1. HTTPS 支持:ngrok 自动为你的本地服务生成 HTTPS URL,确保数据传输的安全性。
  2. 自定义域名和子域名:ngrok 支持绑定自定义域名或为你的服务生成静态子域名,确保 URL 不会频繁更换。
  3. 数据分析:ngrok 提供实时流量数据分析,帮助你监控每一个请求和响应,快速发现问题。
  4. 隧道管理:可以轻松管理和查看正在运行的隧道,支持多个隧道同时运行。
  5. 多协议支持:除了 HTTP/HTTPS,ngrok 还支持 TCP 和其他协议的映射。
  6. 国内可用:这一点,遇到过相关问题的人,算是发现救星了~

如何使用 ngrok

接下来我们来实际操作,看看 ngrok 是如何工作的。

假设你在本地运行了一个 Web 应用,监听的端口号为 80,我们可以通过以下几步将它暴露到互联网。

第一步:下载并安装 ngrok

访问 ngrok 官方网站,根据你的操作系统下载对应的安装包并进行安装。

  1. 对于 Windows 用户,下载后解压到一个目录,打开命令行工具,进入该目录即可使用。
  2. 对于 macOS 用户,可以通过以下命令直接安装:
    brew install ngrok/ngrok/ngrok
    

第二步:创建 ngrok 账户并获取 Authtoken

ngrok 的部分功能需要登录后才能使用。

创建账户后,你会获得一个 Authtoken,在命令行中执行以下命令,将这个 token 添加到 ngrok 中:

ngrok cofig add-authtoken <你的-token>

在这里插入图片描述

第三步:启动 ngrok

假设你有一个本地的 Web 服务运行在端口 80 上,现在我们可以使用 ngrok 将其映射到公网。

在命令行中执行:

ngrok http 80

在这里插入图片描述

此时,ngrok 会为你生成一个公网可访问的 URL,类似于:
在这里插入图片描述

你可以将这个 URL 发送给外部用户,他们通过访问这个地址即可访问你本地运行的应用。

第四步:监控和管理隧道

ngrok 提供了一个方便的 Web 界面,用于查看隧道的实时流量和请求详情。

你可以通过访问以下本地 URL 进行监控:

http://localhost:4041

具体端口是哪个,根据 ngrok 启动的提醒来确认:
在这里插入图片描述

在这里插入图片描述
在这个界面,你可以查看到每个请求的详细信息,包括请求头、响应数据等。

高级使用:使用静态子域名

我们上面的步骤,生成的公网域名,每次都会变化。
如果你不希望 ngrok 每次启动时生成随机的 URL,可以使用 ngrok 提供的静态域名。
在这里插入图片描述
如上图,使用 ngrok 提供的静态域地址映射本地端口。
在这里插入图片描述

安全提示

尽管 ngrok 使内网穿透变得简单高效,但在使用时仍需要注意以下几点:

  1. 生产环境慎用:ngrok 更适合开发和测试环境,不建议在生产环境中使用。
  2. 保护 Authtoken:不要将你的 ngrok Authtoken 泄露给他人,避免产生不必要的安全风险。
  3. 访问控制:ngrok 支持为隧道设置访问控制,确保只有授权的用户才能访问你的服务。

总结

ngrok 是一个功能强大的工具,特别适合开发者在开发和测试阶段展示和共享本地应用。

通过简单的命令,ngrok 能够快速实现内网穿透,同时支持 HTTPS、静态域名、自定义域名等高级功能。

当你下次遇到内网穿透的需求时,试试 ngrok 吧。

希望对你有帮助。

这篇关于ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145537

相关文章

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Conda国内镜像源及配置过程

《Conda国内镜像源及配置过程》文章介绍Conda镜像源使用方法,涵盖临时指定单个/多个源、永久配置及恢复默认设置,同时说明main(官方稳定)、free(逐渐弃用)、conda-forge(社区更... 目录一、Conda国内镜像源二、Conda临时使用镜像源指定单个源临时指定多个源创建环境时临时指定源

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

WinForm跨线程访问UI及UI卡死的解决方案

《WinForm跨线程访问UI及UI卡死的解决方案》在WinForm开发过程中,跨线程访问UI控件和界面卡死是常见的技术难题,由于Windows窗体应用程序的UI控件默认只能在主线程(UI线程)上操作... 目录前言正文案例1:直接线程操作(无UI访问)案例2:BeginInvoke访问UI(错误用法)案例

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、