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


71

是否可以在同一域的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客户端来完成此操作。
stringo0

我需要ngrok网址中的端口号以进行测试。运行多个ngrok客户端将无法解决该用例。
Per Quested Aronsson

Answers:


61

是的,可以在同一条同时使用多个隧道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        

并运行它们:

ngrok start --all

寻找选项,如文档上hostnamesubdomainauthtokenhost_header。希望这对您有所帮助!

PS For Free计划删除自定义主机和标头部分,就像这样,这将是不同域的FYI。

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

笔记:


7
OP实际需要此功能吗?这不是为第一个应用程序创建一个主机名,为第二个应用程序创建一个不同的主机名吗?
user2152081 '17

11
从ngrok 2.2.8开始,此功能无效。它失败并显示以下错误: Tunnel session failed: The tunnel 'http://example.ngrok.com' is already bound to another tunnel session ERR_NGROK_334 ...用于保留的主机名。
cap10morgan18年

1
它说我必须升级:(Tunnel session failed: Only Pro & Business plans may bind custom hostnames. Failed to bind the custom hostname 'sajilni.example.ngrok.com' for the account 'shareef hiasat'. This account is on the 'Free' plan. Upgrade to a paid plan at: https://dashboard.ngrok.com/billing/plan ERR_NGROK_314我必须删除自定义主机名
shareef

13
在花了半天的时间追逐这笔钱后,甚至注册了一个“专业”帐户,Ive认为这不ngrok支持。通过ngrok.io TLD上生成的子域的所有Web流量将在port上侦听:80。要在另一个非标准HTTP端口上进行侦听,您必须使用其TLS“保留”域。但是,那些在注册时会被随机分配一个端口,并且它们不会在与HTTP隧道相同的域上进行侦听。最后,此答案不能为OP的问题提供有效的解决方案。否决票2表示其他2人,而不是2人浪费时间追逐这一点
RavenHursT

2
@MaximilianoGuerra感谢它的工作出色和完美
RAHUL VISHWAKARMA

14

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;
        }
    }
}

我很幸运api服务器在所有调用前面都加上了“ api”,因此我可以将api调用路由到特定端口,并且仍然在其他Web服务器上提供其他流量,因此您可能不太幸运。

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

我希望这可以帮助您考虑到解决方案的组合,因为只有一种方法可能会使您陷入困境。


3
这实际上应该是答案,而不是上面的答案。我付钱给ngrok,然后想通了,他们做不到,把我引向了这个话题。现在,我必须取消帐单并要求退款。大声笑。
路易·米兰达

1
这应该是答案,谢谢您的贡献!,我每年向ngrok支付60 $,希望在服务器中运行多个应用程序来运行多个应用程序,但是这样做有问题,因此支付此类费用没有任何意义我认为我会继续使用免费计划的金额,退款!!
Oswaldo Zapata

2

我在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;
    }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.