95

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

就像是:

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

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

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

4

5 回答 5

101

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

查看文档中的选项,例如hostnamesubdomain和。希望这对你有帮助!authtokenhost_header

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

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

笔记:

于 2016-07-28T19:20:55.807 回答
20

带有多个端口的 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 对其进行排序。

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

于 2019-02-13T20:48:36.457 回答
4

转到这些位置:

  • 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

于 2021-07-09T14:10:14.883 回答
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;
    }
}
于 2020-07-28T17:21:08.930 回答
1

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

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

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

于 2021-09-07T16:16:40.223 回答