Ngrok在同一个域中配置多个端口

fra*_*gue 48 iis-express ngrok

是否可以在同一域中的ngrok中打开多个端口?

就像是:

Fowarding http://example.ngrok.com:50001 - > 127.0.0.1:50001

Fowarding http://example.ngrok.com:50002 - > 127.0.0.1:50002

我在windows中工作,它对于debuging很有用 IIS Express

rob*_*007 32

是的,可以在同一个隧道内使用多个同时进行的隧道hostname!

您需要做的就是在配置文件中声明它们,如下所示:

authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
tunnels:
  first-app:
    addr: 50001
    proto: http
    hostname: example.ngrok.com
    host_header: first-app.example.ngrok.com
  second-app:
    addr: 50002
    proto: http
    hostname: example.ngrok.com
    host_header: second-app.example.ngrok.com        
Run Code Online (Sandbox Code Playgroud)

并运行它们:

ngrok start --all
Run Code Online (Sandbox Code Playgroud)

寻找选项,如文档上hostname,subdomain,authtokenhost_header.希望这对你有所帮助!

PS For Free计划删除这样的自定义主机和标题部分它将是不同的域FYI.

authtoken: 6yMXA63qefMZqCWSCHaaYq_5LufcciP1rG4LCZETjC6V
tunnels:
  first:
    addr: 3002
    proto: http    
  second:
    addr: 8080
    proto: http
Run Code Online (Sandbox Code Playgroud)

  • 花了半天时间追逐这个甚至注册一个"专业"帐户我已经确定这不是"ngrok"所支持的.通过ngrok.io TLD上生成的子域的所有网络流量将_only_侦听端口`:80`.要侦听另一个非标准HTTP端口,您必须使用其TLS"保留"域.但是这些在注册时会被随机分配一个端口,并且它们不会在与HTTP隧道相同的域上进行侦听.最后,这个答案确实没有给出OP的问题的有效解决方案.向下投票2表明其他2人不浪费时间追逐这个 (9认同)
  • 这是否真的需要OP?这不是第一个应用程序的主机名和第二个应用程序的不同主机名吗? (6认同)
  • 从ngrok 2.2.8开始,这不起作用.它失败并出现以下错误:`隧道会话失败:隧道'http://example.ngrok.com'已绑定到另一个隧道会话ERR_NGROK_334` ...以保留主机名. (5认同)
  • @RAHULVISHWAKARMA 我所做的与答案中的最后一个代码完全相同。就我而言,我需要 3 个端口,但每个端口创建 2 个隧道(http 和 https),超出了免费版本的 4 个隧道限制。我更改了配置以仅创建 https 隧道,一切工作正常,仍然有一个用于其他隧道的位置:https://gist.github.com/maximiliano/b69906e513e5b6860327d821bc0578af 如果不清楚,您必须编辑 ngrok 配置文件在您的计算机中并运行如下:`ngrok start --all` (3认同)
  • @MaximilianoGuerra 感谢它运行良好且完美 (2认同)
  • 不适用于免费的 ngrok 帐户,因为为“first”和“second”分配了不同的 URL。 (2认同)
  • @MaximilianoGuerra - 谢谢。非常适合我! (2认同)

spi*_*idy 22

转到这些位置:

  • 操作系统: /Users/example/.ngrok2/ngrok.yml
  • Linux: /home/example/.ngrok2/ngrok.yml
  • 视窗:C:\Users\example\.ngrok2\ngrok.yml

然后在记事本中打开 yml 文件并粘贴以下代码并保存。

authtoken: your_token
tunnels:
  first:
    addr: 3002
    proto: http    
  second:
    addr: 8080
    proto: http
Run Code Online (Sandbox Code Playgroud)

现在转到您的 ngrok 位置并运行ngrok start --all

  • 您可以使用“ngrok config check”找到您的“ngrok.yml”,希望它有帮助:) (4认同)

Jas*_*ing 18

有多个端口的 ngrok 对我有用

所以我遇到了一个问题,我需要相同的域源策略来为不同的端口工作,但是我被阻止了,因为最终 ngrok 不支持这一点。它们支持自定义子域或自定义域,但不支持不同端口,因为所有端口都必须通过端口 80

而不是退出,我不得不像这样在本地使用 nginx一起破解

http {
    server {
        listen       7777;
        server_name  localhost;

        location / {
            proxy_pass http://127.0.0.1:5000;
        }

        location /api {
            proxy_pass http://127.0.0.1:8000;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我很幸运,api 服务器为所有调用添加了前缀“api”,因此我可以将 api 调用路由到特定端口,并仍然在另一台 Web 服务器上提供其他流量,但您可能没有那么幸运。

然后我将公共 Web 服务器配置为将所有 api 调用路由到相同的 ngrok 地址,并让 ngnix 对其进行整理。

我希望这可以帮助您想到实现目标的组合解决方案,因为只考虑一种方法可能会让您像我一样陷入困境。

  • 这实际上应该是答案,而不是上面的答案。我付了 ngrok 然后想,他们做不到并引导我到这个线程。现在,我必须取消账单并要求退款。哈哈。 (3认同)

Ped*_*sio 7

不幸的是,以下解决方案都不适合我,但经过几个小时用鼻子输入代码后,我找到了解决此问题的方法:

身份验证令牌:your_private_token
隧道:
  基础API:
    原型:http
    地址:https://localhost:44307/
    主机头:本地主机:44307
  授权API:
    原型:http
    地址:https://localhost:44305/
    主机头:本地主机:44305

不同之处在于,我没有仅使用现场的端口addr,而是使用了完整的链接并添加了host_header

  • 不要忘记在这些更改之后运行“ngrok start --all” (2认同)
  • 不,不是的。我实际上为此联系了 ngrok 支持,并且不可能在同一子域下启动两个端口。您的配置文件将在两个不同的子域下启动两个隧道。 (2认同)

mar*_*cio 6

使用免费计划

  1. 其实到了2023年,我只是支持原来的答案

  2. 并且,展示了如何编辑 ngrok 配置文件 (ngrok.yml)

CMD做:

ngrok config edit
Run Code Online (Sandbox Code Playgroud)

像这样的东西:

version: "2"
authtoken: your_token_here
tunnels:
  any1:
    addr: 8888
    proto: http
  any2:
    addr: 8080
    proto: http
  any3:
    addr: 50000
    proto: http
Run Code Online (Sandbox Code Playgroud)

最后,再次在 中CMD,启动 ngrok:

ngrok start --all
Run Code Online (Sandbox Code Playgroud)

要开心!

  • 啊,在这里找到了答案:/sf/ask/5215879161/。您必须添加“bind_tls: true” (2认同)