您的位置:

Ngrok 使用教程

Ngrok 是一款可以将本地服务映射到公网的工具,它可以帮助开发者在本地开发的同时,提供一个可以让外网访问的地址。本文将详细介绍 ngrok 的安装、使用以及相关注意事项。

一、安装 ngrok

Ngrok 下载地址:https://ngrok.com/download

安装 ngrok 非常简单,只需要到官网下载对应系统版本的文件即可。

  
    wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
    unzip ngrok-stable-linux-amd64.zip
  

解压完成后,可以使用以下命令进行验证:

  
    ./ngrok -v
  

如果输出类似 ngrok version 3.3.0 的内容,则说明安装成功。

二、使用 ngrok

1. 注册账号并获取 Auth Token

在使用 ngrok 之前,需要先注册一个账号,获取 Auth Token。可以到 ngrok 的官网进行注册,注册完成后,即可获取 Auth Token。

我们可以使用以下命令,将 Auth Token 保存到 ngrok 的配置中:

  
    ./ngrok authtoken <your-auth-token>
  

其中,<your-auth-token> 替换为你自己的 Auth Token。

2. 映射本地服务

使用 ngrok 进行映射只需要一行命令:

  
    ./ngrok http <port>
  

其中,<port> 替换为你要映射的本地服务端口号。

运行完命令后,可以看到类似以下的输出:

  
    ngrok by @inconshreveable                                                                                                                                                                                                                                                                                                                                                                                                (Ctrl+C to quit)
    Session Status                online
    Account                       John Doe (Plan: Free)
    Version                       2.3.35
    Region                        United States (us)
    Web Interface                 http://127.0.0.1:4040
    Forwarding                    http://<generated-subdomain>.ngrok.io -> http://localhost:<port>
    Forwarding                    https://<generated-subdomain>.ngrok.io -> http://localhost:<port>
  

其中,<generated-subdomain> 是 ngrok 自动生成的域名前缀,可以通过该域名前缀,访问到本地服务。

注意,运行该命令时,本地端口必须是可用状态,否则 ngrok 映射会失败。

如果需要开启 https 支持,可以使用以下命令:

  
    ./ngrok http <port> --hostname=<your-domain>
  

其中,<your-domain> 替换为你自己的域名,需要在配置 SSL 证书时用到。

3. 配置 SSL 证书

ngrok 会自动为你创建一个子域名并完成映射,但这个子域名在浏览器中是不受信任的,需要配置 SSL 证书。

SSL 证书的配置很简单,只需要将证书文件放到 ngrok 的配置目录中即可。

SSL 证书通常有两个文件,分别是证书文件和私钥文件,可以使用如下命令生成证书文件和私钥文件:

  
    openssl genrsa -out <your-domain>.key 2048
    openssl req -new -key <your-domain>.key -out <your-domain>.csr
    openssl x509 -req -days 365 -in <your-domain>.csr -signkey <your-domain>.key -out <your-domain>.crt
  

其中,<your-domain> 替换为你自己的域名。

生成证书后,可以使用以下命令将证书文件拷贝到 ngrok 的配置目录中:

  
    sudo cp <your-domain>.crt /usr/local/ngrok/cert/
  

然后,可以使用以下命令来启动 ngrok,启动时需要指定证书文件名:

  
    ./ngrok http <port> --hostname=<your-domain> --tls-cert=<your-domain>.crt --tls-key=<your-domain>.key
  

三、注意事项

1. ngrok 流量监控

ngrok 内置了一个 web 界面,可以用来监控流量。可以通过在浏览器中访问 http://127.0.0.1:4040 进行查看:

  
    Session Status                online                                                             
    Account                       John Doe (Plan: Free)                                             
    Version                       2.3.35                                                             
    Region                        United States (us)                                                 
    Web Interface                 http://127.0.0.1:4040                                              
    Forwarding                    http://<generated-subdomain>.ngrok.io -> http://localhost:<port>   
    Forwarding                    https://<generated-subdomain>.ngrok.io -> http://localhost:<port>  
                                                                                                     
    Connections                   ttl     opn     rt1     rt5     p50     p90                  
                                  0       0       0.00    0.00    0.00    0.00                 
    HTTP Requests                                                                                
    -------------                                                                               
                                                                                                     
  

2. 连接数量限制

ngrok 免费版本有连接数量限制,每个连接只能维持 8 小时,且每分钟限制 40 次请求。如果需要更多的连接数和更长时间的连接,则需要购买 ngrok 的付费版。

3. 防火墙设置

为了确保 ngrok 映射成功,你需要打开本地服务所在机器的防火墙端口,以确保 ngrok 可以访问到本地服务。

如果在使用过程中遇到了连接失败,可以检查是否有防火墙或代理的限制。

4. 本地域名映射

在本地测试时,可以使用 host 文件中的域名映射功能,来模拟 ngrok 动态生成的子域名。例如,在 host 文件中添加以下配置:

  
    127.0.0.1   <your-domain>
  

这样,可以在本地通过 <your-domain> 访问到你需要映射的服务。

结语

本文对 Ngrok 的安装、使用和注意事项进行了详细介绍,以帮助开发者更好地使用这一工具。在使用过程中,需要注意连接数量限制、防火墙设置和本地域名映射等问题,并且注意谨慎使用 ngrok 映射的服务,以免造成安全隐患。