HTTP隧道

自定义子域名称

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

示例:打开具有子域“inconshreveable”的隧道

  1. ngrok http -subdomain=inconshreveable 80
  1. ngrok by @inconshreveable
  2. ...
  3. Forwarding http://inconshreveable.ngrok.io -> 127.0.0.1:80
  4. Forwarding https://inconshreveable.ngrok.io -> 127.0.0.1:80

密码保护您的隧道

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

示例:密码保护您的隧道

  1. ngrok http -auth="username:password" 8080

自定义域上的隧道(白标签网址)

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

  • 1.在 ngrok.com信息中心的“保留”选项卡上输入dev.example.com作为保留域。这保证没有其他人可以用自己的隧道劫持您的域名。

  • 2.在信息中心上,点击“CNAME”图标复制您的CNAME目标。HTTP隧道 - 图1

  • 3.从dev.example.com为您的CNAME目标创建DNS CNAME记录。在本例中,我们将CNAME记录指向2w9c34maz.cname.ngrok.io

  • 4.使用-hostname开关调用ngrok,并将自定义域的名称指定为参数

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

  1. ngrok http -hostname=dev.example.com 8000

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

禁用检查

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

示例:没有检查的http隧道

  1. ngrok http -inspect=false 80

重写主机头

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

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

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

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

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

  1. ngrok http -host-header=example.com 80

仅隧道HTTP或HTTPS

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

示例:仅侦听HTTP隧道端点

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

示例:仅侦听HTTPS隧道端点

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