如何使用ngrok生成固定的URL


74

我正在使用Facebook Messenger。

Facebook应用仅接受一个Webhook网址,但是ngrock每次都会生成新的网址。现在由于webhook URL更改,我无法测试我的应用程序。


1
2018年11月更新:请参阅下面的答案,并提供39项以上建议其他服务的支持!stackoverflow.com/a/47500376/565877
Devin G Rhode

Answers:


157

2020年5月更新

Serveo重新启动并运行!没有安装,没有注册!

您所需要做的就是运行此命令:

ssh -R <unique subdomain>:80:<your local host>:<your local port> serveo.net

喜欢

ssh -R youruniquesubdomain:80:localhost:8000 serveo.net

2020年1月更新

因为有一些问题,Serveolocaltunnel,我想与大家分享另一种免费的基于SSH-自托管服务:Localhost.run

不幸的是,它不提供唯一的子域,但它是基于ssh的,因此您不必安装其他应用程序。仍在等待Serveo回来。


2018年4月更新

我刚刚找到了Serveo!这简直是​​不可思议!


2017年11月更新

也许,这是不是你最好的选择,但我开始使用localtunnel代替ngrok

安装和运行流程非常简单:

npm install -g localtunnel
lt --port <your localhost port> --subdomain youruniquesubdomain

然后,我可以进入我的http://youruniquesubdomain.localtunnel.me


1
当我在docker容器中开发时,我的虚拟网络运行在一个subdomain.localhostURL上。该工具完全可以满足我的需求。谢谢你的建议。
DazBaldwin

3
@DazBaldwin我刚刚更新了我的答案。Serveo看起来非常不可思议!
尤金·科瓦列夫

1
Serveo很棒!如果您正在寻找替代品,那么还有Burrow.io。您可以通过Web界面创建和管理隧道,因此甚至不需要键入ssh命令。只需粘贴CURL命令和BAM,即可打开隧道。
Paulo Arruda '18年

9
与断开连接后自动重启伺服until ssh -R aw2xcd:80:localhost:5000 serveo.net; do echo "Restarting..."; done
克里斯·

5
7月22日,Serveo再次倒下。
上瘾者

14

ngrok ..... pls不再提供免费的子域支持,出现以下错误

隧道会话失败:仅付费计划可以绑定自定义子域。无法为帐户“ arvccccc”绑定自定义子域“ arvindpattartestfb.ngrok.io”。此帐户处于“免费”计划中。

升级到付费计划:https//dashboard.ngrok.com/billing/plan

ERR_NGROK_313


确实。ngrok消息:Tunnel session failed: Only paid plans may bind custom subdomains... Sign up at: https://ngrok.com/signup. If you have already signed up, make sure your authtoken is installed. Your authtoken is available on your dashboard: https://dashboard.ngrok.com
barak manos

2
什么时候更改了,在哪里发布?
JackKalish

8

您需要设置auth令牌,您可以在这里找到https://dashboard.ngrok.com/auth。(W̶o̶r̶k̶s̶̶w̶i̶t̶h̶̶f̶r̶e̶e̶e̶v̶e̶r̶s̶i̶o̶n̶,̶n̶o̶̶n̶e̶e̶d̶̶t̶o̶p̶a̶y̶显然已经付款,请参阅ngrok定价)。

然后,您可以像这样使用它:

ngrok http 80 -subdomain yoursubdomain

6
不起作用。还是一样的错误。隧道会话失败:仅付费计划可以绑定自定义子域。绑定帐户“ Ck Maurya”的自定义子域“ mysubdomain”失败。此帐户处于“免费”计划中。
Ck Maurya

真的很奇怪,我不花一分钱,我可以使用子域选项。也许在新帐户上只能使用一段时间吗?
pbogut

我遇到的问题与@CkMaurya =(
Adriano Tadao

您正在使用哪个版本的ngrok?我已经ngrok version 2.0.19安装好了,当我运行ngrok http 80 -subdomain yoursubdomain它时就可以正常工作。但是正如我所说,必须设置令牌。当我删除令牌时,我也遇到同样的错误。也许我的帐户有点特殊,但我没有为此付费。
pbogut

1
ERR_NGROK_313当使用身份验证令牌运行上述命令时,版本2.2.8给出了。
史蒂夫·钱伯斯

2

localtunnel.me或Serveo都不适用于我,因此我创建了一个临时解决方案,该解决方案适用于包括我的某些用例(本机本地开发):使用ngroknpm包可以将生成的ngrok url保存到json文件,并且可以为任何其他应用读取该文件。

首先,请确保使用安装ngrok,npm install ngrok然后使用以下节点脚本:

const ngrok = require('ngrok');
const fs = require('fs').promises;

(async function() {
  const url = await ngrok.connect(3000);
  const api = ngrok.getApi();
  let data = await api.get('api/tunnels');
  data = JSON.parse(data);
  let dict = {'domain': data.tunnels[0].public_url}
  await fs.writeFile("config.json", JSON.stringify(dict));
  console.log("saved " + data.tunnels[0].public_url);
})();

然后,您可以使用类似于或等于以下代码的代码从您的应用中读取该代码:

const backend = require('./config.json').domain;

1

只是对于DHIS2本地安装,我在ubunut服务器上的termainl上做到了这一点。

确保您的网站在指定端口上运行。我的是8080年。

ssh -R dani.serveo.net:80:localhost:8080 serveo.net

这个servo.net的美丽之处在于,即使电源关闭或Internet断开连接,您也可以根据需要多次在servo.net之前重新启动相同的主机名..prefix url。

干杯!


1

Staqlab隧道免费提供域。它的工作原理很棒,但需要从该网站下载二进制文件。每月使用此服务不会有任何麻烦


0

尽管它不是解决方案,但将其作为解决方法,但测试时我遇到了同样的问题。我所做的是使ngrok始终与我的http端口一起运行,因此我的ngrok网址没有更改。但是我经常更改和重新启动服务器以进行测试和调试。

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.