【问题标题】:Ngrok configure multiple port in same domainNgrok在同一个域中配置多个端口
【发布时间】:2014-10-20 18:07:24
【问题描述】:

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

类似:

转发http://example.ngrok.com:50001 -> 127.0.0.1:50001

转发http://example.ngrok.com:50002 -> 127.0.0.1:50002

我在 Windows 中工作,它对于使用 IIS Express 进行调试很有用

【问题讨论】:

  • 您可以同时运行 2 个 ngrok 客户端来完成此操作。
  • 我需要 ngrok url 中的端口号用于测试目的。运行多个 ngrok 客户端将无助于该用例。

标签: iis-express ngrok


【解决方案1】:

是的,可以在同一个hostname 中使用multiple simultaneous tunnels

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

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        

然后运行它们:

ngrok start --all

查看文档中的选项,例如 hostnamesubdomainauthtokenhost_header。希望对您有所帮助!

P.S对于免费计划删除自定义主机和标题部分 像这样它将是不同的域仅供参考。

authtoken: 6yMXA63qefMZqCWSCHaaYq_5LufcciP1rG4LCZETjC6V
tunnels:
  first:
    addr: 3002
    proto: http    
  second:
    addr: 8080
    proto: http

注意事项:

【讨论】:

  • 这是否符合 OP 的实际需要?这不会为第一个应用程序创建一个主机名,为第二个应用程序创建一个不同的主机名吗?
  • 从 ngrok 2.2.8 开始,这不起作用。它失败并出现以下错误:Tunnel session failed: The tunnel 'http://example.ngrok.com' is already bound to another tunnel session ERR_NGROK_334 ...for reserved hostnames.
  • 在花了半天时间追逐这个甚至注册了一个“专业”帐户后,我确定这不是 ngrok 支持的东西。通过在 ngrok.io TLD 上生成的子域的所有网络流量将侦听端口 :80。要侦听另一个非标准 HTTP 端口,您必须使用他们的 TLS“保留”域。但是它们在注册时会随机分配一个端口,并且它们不会在与 HTTP 隧道相同的域上侦听。最后,这个答案 not 为 OP 的问题提供了有效的解决方案。投反对票 2 表示其他 2 人而不是 2 浪费时间追逐这个
  • @RAHULVISHWAKARMA 我所做的与答案中的最后一个代码完全一样。就我而言,我需要 3 个端口,但每个端口都创建了 2 个隧道(http 和 https),超过了免费版本的 4 个隧道限制。我将配置更改为仅创建 https 隧道,一切正常,其他隧道仍然有一个位置:gist.github.com/maximiliano/b69906e513e5b6860327d821bc0578af 如果不清楚,您必须在您的机器中编辑 ngrok 配置文件并运行:@987654338 @
  • @MaximilianoGuerra 感谢它运行良好且完美
【解决方案2】:

ngrok w/多个端口对我有用

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

没有退出,我不得不像这样在本地使用 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;
        }
    }
}

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

然后我将公共网络服务器配置为将所有 api 调用路由到同一个 ngrok 地址并让 ngnix 对其进行排序。

我希望这可以帮助您考虑多种解决方案以达到目标,因为只有一种方法可能会让您像我一样陷入困境。

【讨论】:

  • 这实际上应该是答案,而不是上面的答案。我付了 ngrok 然后想,他们做不到并把我带到这个线程。现在,我必须取消我的帐单并要求退款。大声笑。
  • 这应该是答案,感谢您的贡献!,我向 ngrok 支付了 60 美元/年的费用,希望在我的服务器上运行多个进程以运行 1 个以上的应用程序,但这样做时遇到问题,我认为支付这么多钱是没有意义的,我会继续使用免费计划,退款!
  • 不同的端口运行良好,但问题是当相同的 URL 必须用于不同的端口时(例如 ESP32 CAM CameraWebServer 在端口 80 上提供静态图片,但视频流在端口 81 上)。
  • @OswaldoZapata 一个人的垃圾就是另一个人的宝藏……谢谢分享!省了不少钱,当然是我的了
【解决方案3】:

转到这些位置:

  • OS X:/Users/example/.ngrok2/ngrok.yml
  • Linux:/home/example/.ngrok2/ngrok.yml
  • Windows:C:\Users\example.ngrok2\ngrok.yml

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

authtoken: your_token
tunnels:
  first:
    addr: 3002
    proto: http    
  second:
    addr: 8080
    proto: http

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

【讨论】:

    【解决方案4】:

    我在 ngrok 进程(在保留域上)上使用,指向本地端口 80。

    ngrok http 80
    

    本地我有 nginx 运行以下配置。对我来说唯一重要的是 2 个位置 /admin 和 /api 因为这些是我以前使用多个 ngrok 进程的地方。 nginx 允许您在不同的位置使用相同的隧道。

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        server_name _;
    
        location /admin {
            proxy_pass http://127.0.0.1:3005;
        }
    
        location /api {
            proxy_pass http://127.0.0.1:5001;
        }
    }
    

    【讨论】:

      【解决方案5】:

      不幸的是,以下解决方案都不适合我,但在用鼻子输入代码几个小时后,我想出了解决这个问题的方法:

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

      不同之处在于,我不仅使用了addr 字段上的端口,还使用了完整链接并添加了host_header

      【讨论】:

      • 不要忘记在这些更改之后运行“ngrok start --all”
      • 这不会在一个子域下启动两个端口,它会创建两个新的临时子域。
      • 是的,这是真的,它可以满足您的所有需求 :)
      • 不,它没有。我实际上为此联系了 ngrok 支持,并且无法在同一个子域下启动两个端口。您的配置文件将在两个不同的子域下启动两条隧道。
      猜你喜欢
      • 2012-08-26
      • 2013-12-26
      • 2015-05-31
      • 2021-11-15
      • 2020-11-28
      • 2016-04-11
      • 2018-05-03
      • 2014-12-27
      • 1970-01-01
      相关资源
      最近更新 更多