Nodejs实现内网穿透服务

yizhihongxing

Node.js实现内网穿透服务的完整攻略

1. 什么是内网穿透

内网穿透(NGROK)是一种技术,通过将内网服务器映射到公网上,并建立内网服务器与公网之间的通道,从而让外部用户可以直接访问内网服务器。

最常用的场景是在开发调试过程中,我们本地开发的网站需要放到公网上进行测试,通常的方式是将应用程序部署到云平台上。但是这种方式不仅需要花费一定的成本,而且数据传输存在安全隐患。

内网穿透则可以省去部署到云平台以及数据传输安全隐患的问题,让我们更方便地进行开发调试。

2. 实现方法

2.1 选择内网穿透工具

常见的内网穿透工具有NGROK、FRP、NATAPP等,这里我们选择使用NGROK。NGROK支持从内网映射到公网,同时可以实现端口映射、负载均衡等多种功能。

2.2 配置服务端

  1. 下载并解压NGROK官方程序
  2. 注册一个NGROK账号,并登陆用户中心
  3. 在用户中心中创建新的authtoken,并记下该authtoken;
  4. 在服务器上运行NGROK服务端(服务端需支持开放80和443端口);
    ./ngrokd -domain="你的域名" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" -tlsKey=server.key -tlsCrt=server.crt -log=stdout -log-level=DEBUG -authtoken=你的authtoken
  5. 以上的域名、authtoken、server.key、server.crt参数需要替换为你自己的。

2.3 配置客户端

  1. 下载并解压NGROK官方程序
  2. 编写NGROK客户端配置文件ngrok.cfg;
    server_addr: "你的域名:4443"
    trust_host_root_certs: false
    tunnels:
    ssh:
    remote_port: 22
    proto:
    tcp: "192.168.0.100:22"
    http:
    subdomain: "your-subdomain"
    proto:
    http: "192.168.0.100:80"
  3. 将上面的your-subdomain替换成你自己的子域名,将192.168.0.100替换成你本地的机器IP地址;
  4. 启动NGROK客户端:
    ./ngrok -config=ngrok.cfg start ssh http
  5. 执行以上命令后,将显示类似于下面的信息:
    Tunnel Status online
    Version 2.3/2.1
    Forwarding http://your-subdomain.ngrok.io -> 192.168.0.100:80
    Forwarding tcp://your-subdomain.ngrok.io:22 -> 192.168.0.100:22
    Web Interface http://127.0.0.1:4040

    上面的your-subdomain.ngrok.io即为你的外网地址,这时外部用户就可以通过访问该地址来访问你本地的机器了。

3. 示例说明

示例一

问题描述:我正在使用本地MySQL数据库,在调试过程中需要让外部的测试团队能够访问该数据库。

解决方案:使用内网穿透的方式将本地的MySQL服务映射到公网上,为外部用户提供访问数据库的服务。

实现步骤如下:

  1. 在服务端配置NGROK服务端并启动服务;
  2. 在客户端的ngrok.cfg文件中,添加以下配置:
    tunnels:
    mysql:
    remote_port: 3306
    proto:
    tcp: 127.0.0.1:3306

    表示将本地3306端口的MySQL服务映射到公网上;
  3. 启动NGROK客户端:
    ./ngrok -config=ngrok.cfg start mysql
  4. 执行以上命令后,将显示类似于下面的信息:
    Tunnel Status online
    Version 2.3/2.1
    Forwarding tcp://your-subdomain.ngrok.io:3306 -> 127.0.0.1:3306
    Web Interface http://127.0.0.1:4040

    上面的your-subdomain.ngrok.io:3306即为你的外网地址和端口,这时外部用户就可以通过访问该地址和端口来访问你本地的MySQL服务了。

示例二

问题描述: 我正在开发一个本地网站,并且使用了Node.js作为后端框架,现在需要让外部用户能够通过访问公网来访问我的本地网站。

解决方案:使用内网穿透的方式将本地的Node.js服务映射到公网上,为外部用户提供访问网站的服务。

实现步骤如下:

  1. 在服务端配置NGROK服务端并启动服务;
  2. 在客户端的ngrok.cfg文件中,添加以下配置:
    tunnels:
    web:
    remote_port: 3000
    proto:
    http: 127.0.0.1:3000

    表示将本地3000端口的Node.js服务映射到公网上;
  3. 启动NGROK客户端:
    ./ngrok -config=ngrok.cfg start web
  4. 执行以上命令后,将显示类似于下面的信息:
    Tunnel Status online
    Version 2.3/2.1
    Forwarding http://your-subdomain.ngrok.io -> 127.0.0.1:3000
    Web Interface http://127.0.0.1:4040

    上面的your-subdomain.ngrok.io即为你的外网地址,这时外部用户就可以通过访问该地址来访问你本地的Node.js服务了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nodejs实现内网穿透服务 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • nodejs如何获取时间戳与时间差

    获取时间戳可以使用JavaScript内置的Date对象。该对象的getTime()方法可以用来获取当前时间距离1970年1月1日00:00:00 UTC的毫秒数,也就是时间戳。在Node.js环境中使用Date.now()方法可以快捷地获取当前时间戳。以下是一个获取当前时间戳的示例代码: const timestamp = Date.now(); cons…

    node js 2023年6月8日
    00
  • Nodejs监控事件循环异常示例详解

    当我们在使用 Node.js 开发应用程序时,有时候会发现事件循环出现了异常,导致程序不能正常运行。为了解决这个问题,我们需要对 Node.js 的事件循环进行监控,及时发现并处理异常情况。本文将为大家介绍如何使用一些工具和方法来监控 Node.js 的事件循环异常。 简介 Node.js 是一个基于 JavaScript 的开源运行环境。它可以运行在服务器…

    node js 2023年6月8日
    00
  • node.js生成与读取csv文件方法详解

    什么是CSV文件 CSV文件是一种通用的电子数据表格文件格式,它通常存储表格数据,每行代表一行数据记录,每列代表数据的一个字段。 CSV文件的优点是易于生成和读取,而且可以在不同的软件程序之间轻松共享和交换。在Node.js中,我们可以使用许多模块来生成和读取CSV文件。 如何生成CSV文件 在Node.js中,我们可以使用csv-writer模块来生成CS…

    node js 2023年6月8日
    00
  • 解析NodeJs的调试方法

    下面是关于解析 Node.js 的调试方法的完整攻略。 入门 在开始调试之前,需要先清楚地了解 Node.js 的调试原理。简单地说,Node.js 的调试是通过在程序启动时指定 –inspect 参数来启用的。这将会使 Node.js 进程与 Chrome DevTools 建立起一个调试通道,通过这个通道可以实时地调试代码。 要调试 Node.js 应…

    node js 2023年6月7日
    00
  • 深入浅析Node.js单线程模型

    深入浅析Node.js单线程模型 Node.js作为一种基于事件驱动的JavaScript运行环境,采用单线程模型(单进程)来实现高并发。本文将从以下几个方面全面介绍Node.js的单线程模型。 Node.js单线程模型的基本原理 Node.js基于事件循环实现单线程模型。它采用事件驱动、异步I/O模型,使得单个线程能够处理大量的并发请求。 事件循环由事件和…

    node js 2023年6月8日
    00
  • Cookie跨域问题解决方案代码示例

    以下是 “Cookie跨域问题解决方案代码示例”的完整攻略,希望对你有所帮助。 什么是Cookie跨域问题 在前后端分离的架构中,前端会请求后端API接口来获取数据或其他操作。如果这个API接口是来自于不同的域名,使用Cookie就会遇到跨域问题。具体来说,浏览器的同源策略会禁止不同源之间的Cookie操作,这就导致了Cookie跨域问题。 Cookie跨域…

    node js 2023年6月8日
    00
  • nodejs中实现用户注册路由功能

    实现用户注册路由功能是Web应用程序的基本功能之一。在Node.js中,需要使用一些模块和库来帮助实现这个功能,下面将为您提供实现用户注册路由功能的完整攻略: 使用Express框架 在Node.js中,我们常用的Web开发框架是Express。使用Express框架可以让我们更快速、更高效地开发Web应用程序。下面是一个简单的Express路由示例: co…

    node js 2023年6月8日
    00
  • Node升级后vue项目node-sass报错问题及解决

    针对该问题,下面给出详细的解决攻略: 问题描述 在升级 Node 版本后,运行 Vue 项目时,可能会出现以下报错: Error: Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 12.x Found bindings f…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部