HTTP隧道
优质
小牛编辑
125浏览
2023-12-01
自定义子域名称
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基本验证。
示例:密码保护您的隧道
ngrok http -auth="username:password" 8080
自定义域上的隧道(白标签网址)
而不是您的隧道显示为ngrok.io
的子域,您可以在您的域上运行ngrok隧道。要通过dev.example.com
运行隧道,请按照下列步骤操作:
- 在 ngrok.com信息中心的“保留”选项卡上输入
dev.example.com
作为保留域。这保证没有其他人可以用自己的隧道劫持您的域名。 - 在信息中心上,点击“CNAME”图标复制您的CNAME目标。
- 从
dev.example.com
为您的CNAME目标创建DNS CNAME记录。在本例中,我们将CNAME记录指向2w9c34maz.cname.ngrok.io
- 使用
-hostname
开关调用ngrok,并将自定义域的名称指定为参数示例:在自定义domai上运行隧道
ngrok http -hostname=dev.example.com 8000
禁用检查
ngrok记录每个HTTP请求和响应通过您的隧道进行检查和重放。 虽然这对开发非常有用,但当您在生产服务上运行ngrok时,您可能希望禁用它以确保安全性和性能。 使用-inspect
开关禁用对隧道的检查。
示例:没有检查的http隧道
ngrok http -inspect=false 80
重写主机头
当转发到本地端口时,ngrok不会修改隧道HTTP请求,它们会在接收时以字节为单位复制到您的服务器。 某些应用程序服务器(如WAMP,MAMP和pow)使用Host
标头来确定要显示哪个开发站点。 因此,ngrok可以使用修改的主机头重写您的请求。 使用-host-header
标头交换机重写传入的HTTP请求。
如果指定了rewrite
,则将重写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