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语法错误的位置
ngrok.com服务的许多高级功能在其他部分中描述,需要您注册一个帐户。注册后,您需要使用仪表板上显示的authtoken配置ngrok。这将授予您访问仅限帐户功能的权限。ngrok有一个简单的'authtoken'命令来使这很容易。在引擎盖下,所有authtoken命令都是authtoken
在ngrok配置文件中添加(或修改)该属性。
安装你的authtoken
ngrok authtoken
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
ngrok.io
您可以在域上运行ngrok隧道,而不是将隧道显示为子域。要运行隧道dev.example.com
,请按照下列步骤操作:
dev.example.com
的“ 保留”选项卡上输入保留域。这保证了没有其他人可以使用自己的隧道劫持您的域名。dev.example.com
您的CNAME目标创建DNS CNAME记录。在此示例中,我们将CNAME记录指向2w9c34maz.cname.ngrok.io
-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
转发到本地端口时,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
默认情况下,当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
Websocket端点通过ngrok的http隧道工作,无需任何更改。但是,目前还没有支持在最初的101个交换协议响应之后对它们进行内省。
官网:https://ngrok.com