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 吧。

希望对你有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/872899.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节

1&#xff1a;MSSQL SQL语法篇&#xff1a; BULK INSERT [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ] FROM data_file [ WITH ( [ [ , ] BATCHSIZE batch_size ] [ [ , ] CHECK_CONSTRAINTS …

基于OMS构建OceanBase容灾双活架构的实践

在实际生产环境中&#xff0c;对于关键业务&#xff0c;往往会有容灾双活的需求。除了OceanBase提供的主备库能力&#xff0c;通过官方工具OMS也可以实现容灾双活架构。目前&#xff0c;通过OMS实现的双活架构仅支持OceanBase数据库之间的数据同步。 要通过OMS实现双活架构&am…

Spring之Bean的生命周期 2024-9-6 19:47

目录 什么是Bean的生命周期为什么要知道Bean的生命周期Bean的生命周期之5步Bean生命周期之7步Bean生命周期之10步 声明&#xff1a;本章博客内容采自老杜2022spring6 语雀文档 什么是Bean的生命周期 Spring其实就是一个管理Bean对象的工厂。它负责对象的创建&#xff0c;对象的…

关于鸿蒙开发中Stage应用模型的相关介绍

应用模型 是系统为开发者提供的应用程序所需能力的抽象提炼&#xff0c;它提供了应用程序必备的组件和运行机制。 简言之&#xff1a;应用模型就是 应用的施工图纸&#xff0c;他规范了&#xff1a;程序运行流程、项目结构、文件功能等…… 了解应用模型之后&#xff0c;就可…

ELK学习笔记(二)——使用K8S部署Kibana8.15.0

上篇文章我们完成了&#xff0c;ES的集群部署&#xff0c;如果还没有看过上篇文章的兄弟&#xff0c;可以去看看。 ELK学习笔记&#xff08;一&#xff09;——使用K8S部署ElasticSearch8.15.0集群 话不多说&#xff0c;接下来直接进入kibana的搭建 一、下载镜像 #1、下载官方…

JS 封装方式

引言&#xff1a;本人是后台服务端开发的&#xff0c;前端的 js 都是在 html 中的 script 标签中写的&#xff0c;处理下数据啥&#xff0c;如果要有需要公共使用的方法啥的都是把方法直接丢在一个 js 文件里&#xff0c;然后 html 引入使用&#xff0c;没有关注过 js 的封装。…

【JavaEE初阶】多线程(2)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 线程的核心操作 创建线程start 线程的状态 线程的终止 定义一个变量实现 利用标志位实现 加上break/return 结束线程 线程等待 join 无参数版本 两个线程等待 多个线…

如何从 Bak 文件中恢复 SQL数据库?(3种方法)

如何从 .bak 文件恢复 SQL数据库&#xff1f; 在数据库管理和维护过程中&#xff0c;数据的安全性和完整性至关重要。备份文件&#xff08;.bak 文件&#xff09;是 SQL Server 中常用的数据库备份格式&#xff0c;它包含了数据库的完整副本&#xff0c;用于在数据丢失、系统故…

iLogtail 开源两周年:社区使用调查报告

作者&#xff1a;玄飏 iLogtail 作为阿里云开源的可观测数据采集器&#xff0c;以其高效、灵活和可扩展的特性&#xff0c;在可观测采集、处理与分析领域受到了广泛的关注与应用。在 iLogtail 两周年之际&#xff0c;我们对 iLogtail 开源社区进行了一次使用调研&#xff0c;旨…

Java入门:07.Java中的面向对象02

5 对象的使用 对象有两种使用情况 情况一&#xff1a; 对象本身&#xff0c;是一个引用类型的数据 所以他也可以像其他的所有数据一样&#xff0c;进行操作 如&#xff1a;存储&#xff0c;打印等。 int i 10 ; print(10) ; ​ //最终存储在变量中的是对象的地址。 Perso…

歌者PPT新功能速递!

本期功能更新&#xff0c;主要围绕 PPT 大纲编辑器和 PPT 翻译功能&#xff0c;全面提升了制作效率和灵活性&#xff0c;帮助你更轻松地完成 PPT 制作&#xff01;一起来看看吧&#xff5e;&#x1f447; # 功能更新 1 PPT 大纲编辑器全面更新 &#x1f4dd; 现在&#xff0c…

解决Metasploit调用Nessus报错问题

问题描述 Error while running command nessus_scan_new: undefined method []’ for nil:NilClass 解决方法 发现报错&#xff0c;经过网上查询解决方法 在Nessus服务器执行&#xff0c;下面的版本号可能有所不同&#xff0c;根据自己的情况更改&#xff0c;需要管理员身份执…

FreeRTOS学习笔记(二)任务基础篇

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、 任务的基本内容1.1 任务的基本特点1.2 任务的状态1.3 任务控制块——任务的“身份证” 二、 任务的实现2.1 定义任务函数2.2 创建任务2.3 启动任务调度器2…

HOT 100(六)二分查找、栈

一、二分查找 1、搜索插入位置 初始化左右边界&#xff1a;left 指向数组的起始位置&#xff0c;right 指向数组的末尾。二分查找过程&#xff1a;不断计算中间位置 mid&#xff0c;根据 nums[mid] 与目标值 target 的比较结果&#xff0c;调整 left 和 right&#xff0c;从而…

Lenze伦茨E82ZBC, E82ZBB E82ZMBRB安装说明手测

Lenze伦茨E82ZBC, E82ZBB E82ZMBRB安装说明手测

VMware17 虚拟机下载以及 CentOS8 操作系统安装配置 一条龙全教程

目录 一、安装 vmware workstation 虚拟机 二、安装 CentOS8 操作系统 三、安装 FinalShell 远程连接 一、安装 vmware workstation 虚拟机 安装中...&#xff08;耐心等待&#xff09; 到此安装完成&#xff0c;点击启动运行 激活码如下&#xff1a; MC60H-DWHD5-H80U…

【个人笔记】VCS工具与命令

Title&#xff1a;VCS工具学习 一 介绍 是什么&#xff1f; VCS (Verilog Compiler Simulator) 是synopsys的verilog 仿真软件&#xff0c;竞品有Mentor公司的Modelsim、Cadence公司的NC-Verilog、Verilog—XL. VCS能够 分析、编译 HDL的design code&#xff0c;同时内置了 仿…

API 网关 OpenID Connect 实战:单点登录(SSO)如此简单

作者&#xff1a;戴靖泽&#xff0c;阿里云 API 网关研发&#xff0c;Higress 开源社区 Member 前言 随着企业的发展&#xff0c;所使用的系统数量逐渐增多&#xff0c;用户在使用不同系统时需要频繁登录&#xff0c;导致用户体验较差。单点登录&#xff08;Single Sign-On&a…

Python和MATLAB(Java)及Arduino和Raspberry Pi(树莓派)点扩展函数导图

&#x1f3af;要点 反卷积显微镜图像算法微珠图像获取显微镜分辨率基于像素、小形状、高斯混合等全视野建模基于探测器像素经验建模荧光成像算法模型傅里叶方法计算矢量点扩展函数模型天文空间成像重建二维高斯拟合天体图像伽马射线能量和视场中心偏移角标量矢量模型盲解卷积和…

每日OJ_牛客_求和(递归深搜)

目录 牛客_求和&#xff08;递归深搜&#xff09; 解析代码 牛客_求和&#xff08;递归深搜&#xff09; 求和_好未来笔试题_牛客网 解析代码 递归中每次累加一个新的数&#xff0c;如果累加和大于等于目标&#xff0c;结束递归。此时如果累加和正好等于目标&#xff0c;则打…