Ngrok 隧道 https 通过配置
Posted
技术标签:
【中文标题】Ngrok 隧道 https 通过配置【英文标题】:Ngrok tunnel https via config 【发布时间】:2021-04-16 20:36:23 【问题描述】:我在寻找如何正确编写我的 ngrok.yml 文件以便它将使用 https 启动隧道时遇到一些问题。我目前拥有的如下:
tunnels:
invenutory:
proto: http
addr: 44328
host_header: localhost
这里的问题是,如果我使用 ngrok 给我的 url,它不会连接(我通过查看它是否命中我的 healthcheck 端点来测试它,它没有)。但是,如果我使用以下命令启动 ngrok:
ngrok http https://localhost:44328 -host-header="localhost:44328"
然后它会正确地到达我的端点。如何使我的配置文件以相同的方式运行?
编辑:
如果我将addr
设置为addr: "https://localhost:44328"
,那么它确实可以正确使用https,但由于某种原因,这在我看来是一种不正确的做法。
【问题讨论】:
IMO 您需要将端口号添加到host_header
值:host_header: localhost:44328
。在文档的示例中,使用的端口是默认端口,因此不需要它们。在您的命令行中,您还指定host:port
而不仅仅是host
。 Quote: 请求中的“Host”标头字段提供来自目标URI的主机和端口信息
我确实尝试将 host_header 设置为那样,但看起来 ngrok 隧道的 https 和 http 仍然只映射到 http,而不是 http 转到 http 和 https 转到 https。拥有免费帐户是否有限制?
我明白了。我不确定免费帐户,但它看起来不像。
我想现在还可以,我在编辑中发布的解决方法应该足以满足我现在的需求
【参考方案1】:
要使用 ngrok http 隧道启动仅 https 隧道,请使用标志 -bind-tls
。
这与你如何使用addr
无关,它可以用来让 ngrok 知道你的本地服务器是在监听 http 还是 https。
来自docs:
ngrok 假设它转发到的服务器正在侦听未加密的 HTTP 流量,但如果您的服务器正在侦听加密的 HTTPS 流量怎么办?您可以使用 https:// 方案指定 URL,以请求 ngrok 向您的本地服务器发送 HTTPS。
【讨论】:
【参考方案2】:您可以将bind_tls
标志添加到配置文件中,以根据docs 仅创建HTTPS 隧道
tunnels:
invenutory:
proto: http
addr: 44328
host_header: localhost
bind_tls: true
【讨论】:
以上是关于Ngrok 隧道 https 通过配置的主要内容,如果未能解决你的问题,请参考以下文章