杜郎俊赏 - dujun.io

开源实例之ngrok

前言

在内网穿透的专题里,必须有 ngrok 的名字,它有广泛的知名度和众多的衍生品。了解什么是内网穿透可以参考《开源实例之frp》一文中的介绍。

ngrok 介绍

ngrok is a reverse proxy that creates a secure tunnel from a public endpoint to a locally running web service. ngrok captures and analyzes all traffic over the tunnel for later inspection and replay.

ngrok 是一个使用go语言编写的反向代理软件,可以在公共端和本地 web 服务之间建立安全通道,捕获和分析所有通道上的流量。

ngrok 1.x 开源,但存在严重问题,已不再维护;ngrok 2.x 是商业软件,未开源,但提供一定限度的免费服务。

ngrok 部署

ngrok 1.x 的服务端和客户端都存在内存泄漏等问题(Both the client and server are known to have serious reliability issues including memory and file descriptor leaks as well as crashes),将导致单点故障(There is also no HA story as the server is a SPOF),作者本人呼吁不要在生产环境使用(DO NOT RUN THIS VERSION OF NGROK 1.X IN PRODUCTION)。

仓库地址:https://github.com/inconshreveable/ngrok

官方已经不支持 1.x,下面介绍第三方提供的一些安装方法。再次提醒不要在生产环境使用,仅供学习参考。

脚本安装

wget --no-check-certificate https://github.com/clangcn/ngrok-one-key-install/raw/master/install_ngrok.sh -O ./install_ngrok.sh
chmod 500 ./install_ngrok.sh
./install_ngrok.sh install

管理命令:

#Usage: /etc/init.d/ngrokd {start|stop|restart|status|config|adduser|deluser|userlist|info}

#启动服务
/etc/init.d/ngrokd start

#创建账号
/etc/init.d/ngrokd adduser

#修改配置
/etc/init.d/ngrokd config

Docker部署

#启动 web 服务器
docker run -d -p 80 --name www nginx

#启动 ngrok
docker run -d -p 4040 --link www:http --name www_ngrok wernight/ngrok

详细参数见https://hub.docker.com/r/wernight/ngrok

ngrok(非开源版本)使用

ngrok is a simplified API-first ingress-as-a-service that adds connectivity,
security, and observability to your apps with no code changes.

ngrok 官网 https://ngrok.com 使用非开源版本提供商业服务,同时也提供一定限度的免费服务(随机子域名,无法自定义)。在很长时间里,我就是用 ngrok 免费服务来做手机端调试。

网站端配置

  • 在官网注册账号(邮箱)
  • 登录查看密钥(Your Authtoken)
  • 下载客户端

客户端配置

  • 安装客户端
  • 配置密钥

ngrok config add-authtoken "Your Authtoken"

开启服务

开启 http 示例:

ngrok http -bind-tls=false 80

生成结果:

如上所示,通过 http://5634-101-71-39-145.ngrok.io 就能访问本地部署的项目。

后记

体验更多开源实例

标签: 开源实例
日期:2023-02-25