Nodejs实现内网穿透服务

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日

相关文章

  • WebStorm 发布2021.3重大更新新功能介绍

    WebStorm 发布2021.3重大更新新功能介绍 WebStorm 已经发布了 2021.3 的重大更新版本,并且增加了许多强大的新功能,本文将详细介绍这些新功能以及如何使用它们。 1. 在 JS/TS 模板文字中使用虚拟变量 新版本的 WebStorm 已经支持在 JavaScript 和 TypeScript 的模板文字中使用虚拟变量。这样可以使代码…

    node js 2023年6月8日
    00
  • 一文详解如何在IDEA中配置Node.js

    下面是关于如何在IDEA中配置Node.js的完整攻略: 1. 下载和安装Node.js 首先,我们需要从官网(https://nodejs.org/)下载和安装Node.js。安装成功后,我们可以在终端输入以下命令来检查一下Node.js是否成功安装: node -v 如果成功安装,会显示Node.js的版本号。 2. 安装Node.js插件 在IDEA中…

    node js 2023年6月8日
    00
  • JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法

    优化前端页面性能的重要一环就是让网页的体积更小,JavaScript代码压缩可以将不必要的空格、换行符、注释等干扰字符去掉,从而缩减代码的体积。本文将详细讲解两款流行的JavaScript代码压缩工具:UglifyJS和Google Closure Compiler的基本用法。 UglifyJS的基本用法 安装 使用NPM安装UglifyJS,命令如下: n…

    node js 2023年6月8日
    00
  • Node.js 中常用内置模块(path 路径模块)

    Node.js 中常用内置模块之一是 path 路径模块,它可以帮助我们轻松地操作和处理文件路径。在本文中,我们将深入探讨它的各种方法和用法。 安装和引用 path 模块是 Node.js 内置的,您不需要任何额外的安装步骤。您只需要使用 require() 函数将它引入您的脚本中即可: const path = require(‘path’); 属性 pa…

    node js 2023年6月8日
    00
  • 调用createApp 时Vue工作过程原理

    调用 createApp 是 Vue3 中创建应用程序的方式,其工作过程涉及多个步骤。 Vue3 应用程序创建过程 以下是 createApp 的调用过程和工作原理: 调用 createApp() 方法创建Vue实例: const app = Vue.createApp({…options}); // or const app = createApp({…

    node js 2023年6月9日
    00
  • node.js中的http.response.writeHead方法使用说明

    下面是关于“node.js中的http.response.writeHead方法使用说明”的完整攻略。 简介 在Node.js中,我们可以使用http模块来创建一个Web服务器。当服务器收到客户端请求后,服务器需要向客户端发送HTTP响应,可以使用http.response.writeHead方法来设置响应的头部信息。 http.response.write…

    node js 2023年6月8日
    00
  • Nodejs–post的公式详解

    Nodejs–post的公式详解 在Node.js中,我们使用http模块进行HTTP通信,其中常见的POST请求需要注意一些细节。 POST请求的公式 POST请求的公式如下: POST /path HTTP/1.1 Host: hostname Content-Type: application/x-www-form-urlencoded Conten…

    node js 2023年6月8日
    00
  • Node.js中的缓冲与流模块详细介绍

    Node.js中的缓冲与流模块详细介绍 简介 Node.js提供了常用的缓冲与流模块,用于处理二进制数据的读/写,在网络传输、文件操作等场景下应用广泛。本文将详细介绍Node.js中的缓冲与流模块的基本用法。 缓冲模块 缓冲的创建 缓冲对象可以通过new Buffer(size)方法来创建,其中size为缓冲区大小(字节)。例如,创建一个大小为10字节的缓冲…

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