通过Ngrok实现内网穿透助力远程开发

在现代软件开发和网络应用的环境下,开发人员常常需要在本地搭建服务器进行调试、测试或演示。然而,传统的端口映射(如使用 NATSSH 隧道)配置繁琐,且并非所有环境都允许直接暴露本地服务。ngrok 作为一款强大的隧道工具,能够简化这一过程,它允许开发者快速、安全地将本地服务器映射到公网,从而实现外部访问。 本文将通过详细的步骤和示例,帮助开发者快速掌握 ngrok,提高本地开发和远程调试的效率,使其能够更便捷地连接本地与互联网。

1. 安装 ngrok

Windows:

访问 ngrok官网 下载 Windows 版本的压缩包。

解压缩下载的文件,并将 ngrok.exe 放置在你希望的文件夹内。

macOS:

brew install ngrok

Linux:

# 先下载 ngrok 适合你系统的版本
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
# 解压
unzip ngrok-stable-linux-amd64.zip
# 将 ngrok 移动到系统 PATH 路径下
sudo mv ngrok /usr/local/bin

2. 注册并配置 ngrok

  1. 在 ngrok官网 注册一个账户。
  2. 登录后,你会在控制面板中看到一个 AuthToken(授权令牌)。
  3. 使用以下命令将授权令牌配置到 ngrok
ngrok authtoken <your_auth_token>

3. 启动 ngrok

双击 Ngrok.exe 启动,弹出命令行界面如下:

假设你的本地服务器正在监听端口 8080,你可以使用以下命令启动 ngrok

ngrok http 8080

ngrok 会在控制台中显示一个类似以下的输出:

ngrok by @inconshreveable                                                                                                                                                                                                                                                                                                                                                               (Ctrl+C to quit)

Session Status                online
Session Expires               1 hour, 0 minutes
Version                       3.x.x
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://<random_subdomain>.ngrok.io -> localhost:8080

 

你可以通过 http://random_subdomain.ngrok.io 访问你本地的 8080 端口。

4. 配置其他端口和协议

ngrok 不仅支持 HTTP,还支持多种协议,如 TCP 等。你可以用不同的命令启动对应的隧道。

  • TCP 隧道
ngrok tcp 22

这将暴露本地的 22 端口(例如用于 SSH)。

  • 自定义子域名(需要 ngrok 的付费计划):
ngrok http -subdomain=your_custom_subdomain 8080

这将使用你选择的 your_custom_subdomain.ngrok.io 来访问。

5. 查看 ngrok 的 Web 面板

ngrok 会启动一个本地的 Web 面板(默认是 http://127.0.0.1:4040),你可以在该面板中查看请求日志、请求详情、重新播放请求等。

6. 停止 ngrok

可以通过按 Ctrl+C 来停止 ngrok,这会终止当前的隧道连接。

7. 访问 ngrok 开放端口下的接口

在前端直接访问通过 Ngrok 发布到公网的接口时,会被中间页拦截。

需要在请求头里增加 "ngrok-skip-browser-warning":"69420",来跳过拦截页面。

例如:

fetch(url, {
      method: "get",
      headers: new Headers({
        "ngrok-skip-browser-warning": "69420",
      }),
    })
      .then((response) => response.json())
      .then((data) => console.log(data))
      .catch((err) => console.log(err));

8. Ngrok 内网穿透总结

ngrok 作为一款轻量级的网络隧道工具,为开发者提供了一种高效、便捷的方式,将本地服务安全地暴露到公网。无论是在 Web 开发、API 调试、Webhook 集成还是远程访问场景下,ngrok 都展现出了极大的灵活性和实用性。通过简单的命令,开发者即可创建安全的公网访问链接,并配合 ngrok 提供的 Web 控制台进行流量监控和请求管理。

尽管 ngrok 提供了强大的功能,但在使用过程中仍需注意安全性,避免将敏感数据暴露到外部网络。同时,对于有更复杂需求的用户,ngrok 付费版本支持自定义子域名、IP 白名单等高级功能,可满足企业级应用的需求。

总体而言,ngrok 是开发人员值得掌握的一款实用工具。它不仅提高了本地开发环境的可访问性,也简化了调试流程,使开发者能够更专注于应用的功能开发。未来,随着远程开发需求的增加,ngrok 及类似工具将在更多场景中发挥重要作用,为开发者带来更高效的工作方式。

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

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

相关文章

Elasticsearch的索引生命周期管理

目录 说明零、参考一、ILM的基本概念二、ILM的实践步骤Elasticsearch ILM策略中的“最小年龄”是如何计算的&#xff1f;如何监控和调整Elasticsearch ILM策略的性能&#xff1f; 1. **监控性能**使用/_cat/thread_pool API基本请求格式请求特定线程池的信息响应内容 2. **调整…

wx043基于springboot+vue+uniapp的智慧物流小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

关于使用PHP时WordPress排错——“这意味着您在wp-config.php文件中指定的用户名和密码信息不正确”的解决办法

本来是看到一位好友的自己建站&#xff0c;所以突发奇想&#xff0c;在本地装个WordPress玩玩吧&#xff0c;就尝试着装了一下&#xff0c;因为之前电脑上就有MySQL&#xff0c;所以在自己使用PHP建立MySQL时报错了。 最开始是我的php启动mysql时有问题&#xff0c;也就是启动过…

批量卸载fnm中已经安装的所有版本

直接上代码 fnm list | awk -F NR>1 {print line} {line$2} | xargs -n 1 -I {} fnm uninstall {}原理 fnm list 列出 fnm 中所有已经安装的 node 版本 awk -F NR>1 {print line} {line$2} 以空格分隔-F {line$2}&#xff0c;取从左到右第 2 段&#xff08;v22.11…

gesp(C++六级)(7)洛谷:P10376:[GESP202403 六级] 游戏

gesp(C六级)&#xff08;7&#xff09;洛谷&#xff1a;P10376&#xff1a;[GESP202403 六级] 游戏 题目描述 你有四个正整数 n , a , b , c n,a,b,c n,a,b,c&#xff0c;并准备用它们玩一个简单的小游戏。 在一轮游戏操作中&#xff0c;你可以选择将 n n n 减去 a a a&am…

Microsoft Visual Studio 2022 主题修改(补充)

Microsoft Visual Studio 2022 透明背景修改这方面已经有很多佬介绍过了&#xff0c;今天闲来无事就补充几点细节。 具体的修改可以参考&#xff1a;Microsoft Visual Studio 2022 透明背景修改&#xff08;快捷方法&#xff09;_material studio怎么把背景弄成透明-CSDN博客文…

新时代架构SpringBoot+Vue的理解(含axios/ajax)

文章目录 引言SpringBootThymeleafVueSpringBootSpringBootVue&#xff08;前端&#xff09;axios/ajaxVue作用响应式动态绑定单页面应用SPA前端路由 前端路由URL和后端API URL的区别前端路由的数据从哪里来的 Vue和只用三件套axios区别 关于地址栏url和axios请求不一致VueJSPS…

【教学类-89-01】20250127新年篇01—— 蛇年红包(WORD模版)

祈愿在2025蛇年里&#xff0c; 伟大的祖国风调雨顺、国泰民安、每个人齐心协力&#xff0c;共同经历这百年未有之大变局时代&#xff08;国际政治、AI技术……&#xff09; 祝福亲友同事孩子们平安健康&#xff08;安全、安全、安全&#xff09;、巳巳如意&#xff01; 背景需…

用XAMPP安装PHP环境(Window系统)

视频教程 BV1jA411v791 进入XAMPP官网 Download XAMPP 找到最新版本&#xff0c;64位的下载&#xff0c;一路安装&#xff0c;语言只有英语德语两个&#xff08;不会德语&#xff09; 安装好以后启动软件&#xff0c;点Apache&#xff0c;MySql&#xff0c;start 在C:\xampp\…

并发编程 - 线程同步(二)

经过前面对线程同步初步了解&#xff0c;相信大家对线程同步已经有了整体概念&#xff0c;今天我们就来一起看看线程同步的具体方案。 01、ThreadStatic 严格意义上来说这两个并不是实现线程同步方案&#xff0c;而是解决多线程资源安全问题&#xff0c;而我们研究线程同步最终…

回顾:Maven的环境搭建

1、下载apache-maven-3.6.0 **网址:**http://maven.apache.org 然后解压到指定的文件夹&#xff08;记住文件路径&#xff09; 2、配置Maven环境 复制bin文件夹 的路径D:\JavaTool\apache-maven-3.6.0\bin 环境配置成功 3、检查是否配置成功 winR 输入cmd 命令行输入mvn -v…

DRF开发避坑指南01

在当今快速发展的Web开发领域&#xff0c;Django REST Framework&#xff08;DRF&#xff09;以其强大的功能和灵活性成为了众多开发者的首选。然而&#xff0c;错误的使用方法不仅会导致项目进度延误&#xff0c;还可能影响性能和安全性。本文将从我个人本身遇到的相关坑来给大…

DeepSeek R1:中国AI黑马的崛起与挑战

文章目录 技术突破&#xff1a;从零开始的推理能力进化DeepSeek R1-Zero&#xff1a;纯RL训练的“自我觉醒”DeepSeek R1&#xff1a;冷启动与多阶段训练的平衡之道 实验验证&#xff1a;推理能力的全方位跃升基准测试&#xff1a;超越顶尖闭源模型蒸馏技术&#xff1a;小模型的…

电路研究9.2.4——合宙Air780EP中MQTT 相关命令使用方法研究

之前研究了FTP命令&#xff0c;这次研究一下MQTT命令了。 16.14 使用方法举例 9.5.3 MQTT 应用指南 4G 模块支持 MQTT 和 MQTT SSl 协议&#xff0c; MQTT 应用的基本流程如下&#xff1a; 1、如果要支持 SSL&#xff0c;配置 SSL 参数2、通过 TCP 连接到 MQTT 服务器 3、发送 …

寻找旋转数组中的最小元素:C语言实现与分析

在算法与编程的世界里&#xff0c;经常会遇到各种有趣的问题。今天我们来探讨一个经典的题目&#xff1a;寻找旋转数组中的最小元素。我们将通过C语言代码实现&#xff0c;并详细分析其原理和实现细节。 题目描述 给定一个可能旋转过的递增排序数组&#xff0c;找到数组中的最小…

Object类(3)

大家好&#xff0c;今天继续给大家介绍一下object类中的方法&#xff0c;那么话不多说&#xff0c;来看。 hashcode()这个方法,帮我们算了一个具体的对象位置,这里面涉及到数据结构,简单认为它是个内存地址,然后调用Integer.toHexString ()将这个地址以16进制输出。 该方法是一…

Kafka 日志存储 — 磁盘存储

Kafka 依赖与磁盘来存储和缓存消息&#xff0c;采用文件追加的方式来写入消息。顺序写盘的速度快于随机写内存。 1 磁盘存储 除顺序写入外&#xff0c;Kafka中大量使用了页缓存、零拷贝等技术来进一步提升吞吐性能。 1.1 页缓存 页缓存是操作系统实现的一种磁盘缓存&#x…

基于SpringBoot的阳光幼儿园管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

什么是长短期记忆网络?

一、概念 长短期记忆网络&#xff08;Long Short-Term Memory, LSTM&#xff09;是一种特殊的循环神经网络&#xff08;RNN&#xff09;&#xff0c;旨在解决标准RNN在处理长序列时的梯度消失和梯度爆炸问题。LSTM通过引入三个门&#xff08;输入门、遗忘门和输出门&#xff09…

Unity游戏(Assault空对地打击)开发(1) 创建项目和选择插件

目录 前言 创建项目 插件导入 地形插件 前言 这是游戏开发第一篇&#xff0c;进行开发准备。 创作不易&#xff0c;欢迎支持。 我的编辑器布局是【Tall】&#xff0c;建议调整为该布局&#xff0c;如下。 创建项目 首先创建一个项目&#xff0c;过程略&#xff0c;名字请勿…