利用服务器搭建自己的 ngrok服务实现内网穿透

2023-11-08

介绍

ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

通过 ngrok 服务我们可以在本地调试微信的接口,调试微信和支付宝的支付回调或者临时搭建一个通道用于在外网访问本地部署的项目。

准备

一台云服务器(以 centos 为例)
一个域名

搭建

  1. 配置一个 ngrok 的二级域名 :ngrok.xxx.com (将 xxx.com 替换为你自己的域名,下同)
    一个泛域名 : *.ngrok.xxx.com
    都指向云服务器的 ip 地址域名配置

  2. 在服务器上安装 git

    yum -y install git
    
  3. 在服务器上安装 golang

    yum -y install golang
    
  4. clone ngrok 源码

    #创建一个文件夹
    mkdir ~/ngrok && cd ~/ngrok
    #下载源码
    git clone https://github.com/inconshreveable/ngrok.git
    
  5. 生成自签名 ssl 证书

    openssl genrsa -out rootCA.key 2048
    
    openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.xxx.com" -days 5000 -out rootCA.pem
    openssl genrsa -out device.key 2048
    
    openssl req -new -key device.key -subj "/CN=ngrok.xxx.com" -out device.csr
    openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
    
  6. 替换默认的证书

    # 拷贝刚才生成的证书到指定的文件夹
    cp rootCA.pem assets/client/tls/ngrokroot.crt
    cp device.crt assets/server/tls/snakeoil.crt
    cp device.key assets/server/tls/snakeoil.key
    
  7. 编译服务端与客户端的 ngrok 文件

    服务端(Linux):

    make release-server
    

    客户端:

    # linux 客户端
    make release-client
    # mac 客户端
    GOOS=darwin GOARCH=amd64 make release-client
    # windows 客户端
    GOOS=windows GOARCH=amd64 make release-client
    
  8. 启动服务端 ngrokd

    # :8999 和 :4430为服务器的端口,因为我的服务器默认的 80和 443 端口被占用了,改用其他的端口
    ./bin/ngrokd -domain="ngrok.xxx.com" -httpAddr=":8999" -httpsAddr=":4430"
    
  9. 下载编译好的客户端文件到本地

    # mac 客户端
    scp root@xxx:~/ngrok/bin/darwin_amd64/ngork ./
    # windows 客户端
    scp root@xxx:~/ngrok/bin/windows_amd64/ngork.exe ./
    
  10. 配置客户端连接(以 mac 环境为例)
    在这里插入图片描述
    修改 ngrok.cfg 文件改为以下内容

    server_addr: " ngrok.xxx.com:4443"
    trust_host_root_certs: false
    

    将 ngrok 文件设置为可执行文件

    chmod +x ngrok
    

    在客户端启动一个项目,假设在我的客户端有一个运行的项目,端口为8000,启动客户端

    #如果不加参数-subdomain=test,将会随机自动分配子域名。
    ngrok -config=ngrok.cfg  -subdomain=test 8000
    

    如果配置没有问题的话,会出现以下内容
    在这里插入图片描述
    访问 test.ngrok.xxx.com:8999 即可访问到运行在本地的项目

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用服务器搭建自己的 ngrok服务实现内网穿透 的相关文章

随机推荐

  • SAP事务码MM17物料主数据批量维护

    这个事务码真的很有意思 因为可以看到物料主数据不同层次的内容 为什么这么说呢 进入MM17
  • mysql 修改数据库字段长度限制_修改数据库字段长度问题,非常紧急!大家来帮忙...

    你的位置 问答吧 gt JAVA gt 问题详情 修改数据库字段长度问题 非常紧急 大家来帮忙 我有一个表里有个主键id char 3 第一个问题 能不能把char 3 改为varchar2 10 alter table sys compa
  • Hadoop安装过程与问题解决

    Hadoop安装过程与问题解决 安装环境 CentOS JDK1 8 如何查看系统版本号 如下图 cat etc redhat release 下载Hadoop 包 可以通过在windows下下载 然后通过linux的客户端工具进行上传 这
  • AI测试中的数据收集

    人工智能 通俗来说就是让机器最大程度的接近于人 如人与人之间沟通 识别图像 奔跑 越障等 例如之前被刷屏的波士顿动力机器人 猎豹移动在世界机器人大会展出的研磨咖啡机器人 图像识别是目前人工智能应用的一大类型 不断地收集 调整 完善测试数据来
  • 【深度长文】人脸识别:人脑认知与计算机算法(五部曲)

    来源 本文经作者 Owl of Minerva 授权转载 链接 https zhuanlan zhihu com HicRhodushicsalta 1 初期预测和介绍 现阶段 人脸识别是人工智能领域最炙手可热的话题之一 Google和Fa
  • 用Python画圣诞树

    拿去给自己所思所念之人 import turtle as t as就是取个别名 后续调用的t都是turtle from turtle import import random as r import time n 100 0 speed f
  • uniapp微信小程序使用axios(vue3+axios+ts版)

    版本号 vue 3 2 45 axios 1 4 0 axios miniprogram adapter 0 3 5 安装axios及axios适配器 适配小程序 yarn add axios axios miniprogram adapt
  • CentOS安装docker

    Docker这两年大受追捧 风光无二 Docker是一个轻量级容器技术 类似于虚拟机技术 xen kvm VMware virtualbox Docker是直接运行在当前操作系统 Linux 之上 而不是运行在虚拟机中 但是也实现了虚拟机技
  • vmware workstation pro 14 虚拟机无法开启、黑屏的解决方案汇总

    方案1 卸载鲁大师 重启 方案2 管理员命令行 输入netsh winsock reset 重启 方案3 360安全管家修复LSP 重启 方案4 卸载14 0 安装12 0 手动导入虚拟机 转载于 https www cnblogs com
  • 【待解决】【OpenCV图像处理】1.27 模板匹配(Template Match)

    1 相关理论 直观介绍 介绍 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域 所以模板匹配首先需要一个模板图像T 给定的子图像 另外需要一个待检测的图像 源图像S 工作方法 在带检测图像上 从左到右 从上向下计算模板图像与重叠子图
  • 解决ModuleNotFoundError: No module named ‘pip‘

    pip install U pip 把pip搞没了 报错 环境路径 Scripts pip script py is not present 这个错误可以通过两行简单的cmd命令行语句进行改正修复 python m ensurepip py
  • GAN(生成对抗网络)Matlab代码详解

    这篇博客主要是对GAN网络的代码进行一个详细的讲解 首先是预定义 clear clc clc是清除当前command区域的命令 表示清空 看着舒服些 而clear用于清空环境变量 两者是不同的 装载数据集 train x load Norm
  • access数据库—— 偏移注入&移位溢注&逐字猜解

    目录 前言 正文 0x01 access数据库介绍 0x02 Access union注入 1 猜表 2 猜字段 查数据 0x02 Access 逐字猜解注入 1 猜表 2 猜字段 3 判断长度 4 查询数据 0x03 Access 偏移注
  • File.renameTo()无效-解决

    File renameTo 在windows下运行正常 可正常移动文件 但在linux下就失败了 代码运行正常 但文件没有移动 这种情况下可以使用Files move代替 import java nio file 重命名文件 new Fil
  • vue-cli3实现mockjs数据模拟

    方法一 安装mockjs npm install mockjs save 在src文件夹先新建mock文件夹用于存放json数据 在vue config js文件中做配置 const mockdata require src mock ba
  • 跟着代码随想录练算法 —— 动态规划(JS)

    跟着代码随想录练算法 动态规划 62 不同路径 https leetcode cn problems unique paths 63 不同路径 II https leetcode cn problems unique paths ii 96
  • SQLSTATE=08S01通讯连接失败

    导致此错误的原因是连接池已经耗尽 所以在连接数据库时要记得关闭连接 防止连接用完
  • php swoole 请求tcp服务的两种方式

    第一种方式 可以实现在代码中调用 task connection stream socket client tcp 127 0 0 1 8721 errno errstr task data array route gt demo test
  • x390拆机 升级内存和硬盘_扩容提速必看!笔记本内存和硬盘如何升级?

    在 想给笔记本清灰升级 先了解下如何拆机吧 一文中我们介绍了笔记本的拆机思路以及注意事项 当你可以自行拆下底盖并看到主板之后 就可以进一步对内存和硬盘这两个存储单元进行替换升级了 内存的升级思路 并不是所有笔记本都能升级内存 很多主打便携的
  • 利用服务器搭建自己的 ngrok服务实现内网穿透

    介绍 ngrok 是一个反向代理 通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道 通过 ngrok 服务我们可以在本地调试微信的接口 调试微信和支付宝的支付回调或者临时搭建一个通道用于在外网访问本地部署的项目 准备 一台