ngrok内网穿透

将本地Web服务器公开到Internet

ngrok允许您将本地计算机上运行的Web服务器公开到Internet。告诉ngrok您的Web服务器正在侦听哪个端口。

如果您不知道Web服务器正在侦听哪个端口,则可能是端口80,即HTTP的默认端口。

示例:将本地计算机的端口80上的Web服务器公开到Internet

ngrok http 80

当您启动ngrok时,它将在终端中显示一个UI,其中包含隧道的公共URL以及有关通过隧道建立的连接的其他状态和度量信息。

ngrok控制台UI

ngrok by @inconshreveable

Tunnel Status                 online
Version                       2.0/2.0
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://92832de0.ngrok.io -> localhost:80
Forwarding                    https://92832de0.ngrok.io -> localhost:80

Connnections                  ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

检查您的流量

ngrok提供实时Web UI,您可以在其中内省通过隧道运行的所有HTTP流量。启动ngrok后,只需在Web浏览器中打开http:// localhost:4040即可检查请求详细信息。

尝试向您的公开网址发出请求。完成后,请回顾检查UI。您将看到请求和响应的所有详细信息,包括时间,持续时间,标头,查询参数和请求有效负载以及线路上的原始字节。

HTTP请求和响应的详细内省

重播请求

开发外部API发布的webhook通常会要求您做一些工作(例如拨打电话)来触发挂钩请求,从而减慢开发周期。ngrok允许您通过单击重放任何请求,大大加快了迭代周期。单击Web检查UI上任何请求右上角的“ 重播”按钮以重播它。

只需单击一下,即可对您的隧道Web服务器重播任何请求

请求身体验证

ngrok特别支持Web上使用的最常见的数据交换格式。请求或响应正文中的任何XML或JSON数据都会自动为您打印并检查语法错误。

突出显示JSON语法错误的位置

安装Authtoken

ngrok.com服务的许多高级功能在其他部分中描述,需要您注册一个帐户。注册后,您需要使用仪表板上显示的authtoken配置ngrok。这将授予您访问仅限帐户功能的权限。ngrok有一个简单的'authtoken'命令来使这很容易。在引擎盖下,所有authtoken命令都是authtoken在ngrok配置文件中添加(或修改)该属性。

安装你的authtoken

ngrok authtoken 

HTTP隧道

自定义子域名

ngrok将随机十六进制名称分配给它为您打开的HTTP隧道。这对于一次性个人用途是可以的。但是,如果您在黑客马拉松中显示URL或与第三方webhook集成,则如果隧道名称更改或难以阅读,则可能会令人沮丧。您可以使用-subdomain交换机为隧道URL指定自定义子域。

示例:打开子域'inconshreveable'的隧道

ngrok http -subdomain=inconshreveable 80
ngrok by @inconshreveable

...
Forwarding                    http://inconshreveable.ngrok.io -> 127.0.0.1:80
Forwarding                    https://inconshreveable.ngrok.io -> 127.0.0.1:80

密码保护你的隧道

任何可以猜测您的隧道URL的人都可以访问您的本地Web服务器,除非您使用密码保护它。您可以使用-auth交换机确保隧道安全 。这将使用您指定为参数的用户名和密码对所有请求强制执行HTTP Basic Auth。

示例:密码保护您的隧道

ngrok http -auth="username:password" 8080

自定义域上的隧道(白色标签URL)

ngrok.io您可以在域上运行ngrok隧道,而不是将隧道显示为子域。要运行隧道dev.example.com,请按照下列步骤操作:

  1. 在ngrok.com仪表板dev.example.com的“ 保留”选项卡上输入保留域。这保证了没有其他人可以使用自己的隧道劫持您的域名。
  2. 在信息中心上,点击“CNAME”图标以复制您的CNAME目标。
  3. dev.example.com您的CNAME目标创建DNS CNAME记录。在此示例中,我们将CNAME记录指向2w9c34maz.cname.ngrok.io
  4. 使用-hostname开关调用ngrok 并指定自定义域的名称作为参数。确保-region您指定的内容与您保留域的区域相匹配。

    示例:在自定义域上运行隧道

    ngrok http -region=us -hostname=dev.example.com 8000

通过HTTPS访问自定义域隧道仍然有效,但证书不匹配。如果您有TLS证书/密钥对,请尝试使用TLS隧道。

禁用检查

ngrok通过隧道记录每个HTTP请求和响应,以进行检查和重放。虽然这对于开发非常有用,但是当您在生产服务上运行ngrok时,您可能希望禁用它以获得安全性和性能。使用此-inspect开关禁用隧道检查。

示例:没有检查的http隧道

ngrok http -inspect=false 80

重写Host标头

转发到本地端口时,ngrok根本不会修改隧道HTTP请求,它们会在收到时逐字节地复制到服务器。某些应用程序服务器(如WAMP,MAMP和pow)使用Host标头来确定要显示的开发站点。因此,ngrok可以使用修改后的Host头重写您的请求。使用该-host-header开关重写传入的HTTP请求。

如果rewrite指定,Host则将重写标头以匹配转发地址的主机名部分。任何其他值都将导致Host 标头重写为该值。

将主机标头重写为“site.dev”

ngrok http -host-header=rewrite site.dev:80

将主机标头重写为“example.com”

ngrok http -host-header=example.com 80

仅隧道传输HTTP或HTTPS

默认情况下,当ngrok运行HTTP隧道时,它会打开HTTP和HTTPS流量的端点。如果您只希望转发HTTP或HTTPS流量,但不能同时转发两者,则可以使用-bind-tls交换机切换此行为。

示例:仅侦听HTTP隧道端点

ngrok http -bind-tls=false site.dev:80

示例:仅侦听HTTPS隧道端点

ngrok http -bind-tls=true site.dev:80

的WebSockets

Websocket端点通过ngrok的http隧道工作,无需任何更改。但是,目前还没有支持在最初的101个交换协议响应之后对它们进行内省。

官网:https://ngrok.com

 

你可能感兴趣的:(ngrok内网穿透)