You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否模仿ngrok或从零搭建同类服务?部署于自有公网IP服务器

能否模仿/从零开发ngrok类内网穿透服务?

完全可以基于你的公网IP服务器,从零开发或复刻与ngrok功能一致的内网穿透服务。ngrok的核心逻辑是反向代理+长连接隧道转发,只要理清底层技术栈,从零实现并非难事。

核心原理拆解

ngrok的核心工作流程很清晰:

  • 内网客户端主动向公网服务器发起并维持长连接
  • 公网服务器接收外部请求后,通过已建立的长连接将流量转发到内网服务
  • 内网服务的响应沿原路回传,最终返回给外部请求方

从零开发的关键技术点

  • 长连接维持:基于TCP或WebSocket实现,需加入心跳检测、自动重连机制,防止连接被中间网关主动断开
  • 反向代理逻辑:公网服务器需监听指定端口(或绑定自定义域名),将外部请求匹配到对应客户端的隧道连接并转发流量
  • 隧道映射管理:维护客户端ID与隧道连接的映射表,支持同时为多个内网服务建立独立隧道
  • TLS加密支持:若要提供HTTPS穿透,需在公网服务器配置SSL证书,或实现证书自动下发逻辑
  • 跨平台客户端:开发支持Windows/macOS/Linux的客户端程序,负责与公网服务器建联并转发本地端口流量

简化版快速实现思路(以Go语言为例,ngrok原生基于Go开发)

  1. 公网服务器端:
    • 监听两个端口:一个用于客户端注册(如:8080),一个用于外部请求转发(如:80)
    • 维护内存映射表,记录客户端标识与对应长连接的关联关系
    • 当外部请求到达转发端口时,根据域名/路径匹配到目标客户端连接,双向转发流量
  2. 内网客户端:
    • 连接公网服务器的注册端口,上报本地需暴露的服务端口信息
    • 建立双向数据流,将本地服务的请求/响应与公网服务器的转发流量互通

低成本复刻方案(无需从零写代码)

如果不想从头开发,也可以基于开源项目快速修改适配:

  • Fork ngrok官方源码,调整配置项、域名绑定逻辑后,直接部署到你的公网服务器
  • 使用frp这类轻量开源内网穿透工具,通过自定义配置实现类似ngrok的功能(支持自定义域名、TLS加密等)

部署注意事项

  • 确保公网服务器的防火墙/安全组开放所需端口(客户端注册端口、外部访问端口)
  • 若使用域名访问,需将域名解析到你的公网服务器IP
  • 提供HTTPS服务时,需申请SSL证书(如Let's Encrypt免费证书)并配置在公网服务器

内容的提问来源于stack exchange,提问作者José Corcios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:45:34