Ngrok错误'502 bad gateway'。

72

我对使用任何网络应用程序都很陌生,最近一直在尝试缓慢地构建一个Facebook Messenger机器人。但是当我尝试使用ngrok时,我无法访问给定的地址,例如:

ngrok http 5000

我在命令行中输入的是这样的,它返回了如下结果:

ngrok by @inconshreveable

Session Status                online
Version                       2.1.18
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://ea986ca5.ngrok.io -> localhost:5000
Forwarding                    https://ea986ca5.ngrok.io -> localhost:5000

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

但当我按照Facebook开发者页面所要求的方式使用地址 'https://ea986ca5.ngrok.io' 时,它显示:

The connection to http://ea986ca5.ngrok.io was successfully tunneled to your
ngrok client, but the client failed to establish a connection to the local  
address localhost:5000.


Make sure that a web service is running on localhost:5000 and that it is a 
valid address.


The error encountered was: dial tcp [::1]:5000: connectex: No connection 
could be made because the target machine actively refused it.

我的本地端口有问题吗?谢谢!


1
你能够实际访问 localhost:5000 吗? - njzk2
既然你提到了,我不能做什么?为什么? - Jordan Cagney
你是否有一个在该端口上监听的服务器? - njzk2
我是不是最好使用正在监听的端口? - Jordan Cagney
对我来说,使用ngrok总是出现问题。最终决定测试Marcel(Beyond Code)的Expose纯PHP应用程序。太棒了!安装简单,而且它只需要运行即可。 - s3c
显示剩余2条评论
24个回答

1

确保服务器监听的端口与NGROK隧道相同

在我的情况下,我使用'ngrok HTTP 3002'运行ngrok,而我的express服务器正在端口5000上运行,因此抛出了BAD GATEWAY错误。

我重新启动了端口为5000的ngrok,它就像魔法一样工作了。


1

0
如果您仅想使用ngrok拦截传入数据,并且由于任何原因都没有本地Web服务器,那么可以使用ncat。 < p >< code > nc -l 5000 < / code > 这将创建一个侦听端口80的进程。
因此,在与 < p >< code > ngrok http 5000 < / code > 结合使用时,您将不再收到“502错误网关”的错误提示。

0

502 网关错误是因为 ngrok 无法从本地主机接收任何响应导致的。

需要执行以下操作:

  1. 在端口上启动Web服务器
  2. 在该端口触发 ngrok 命令。

我所做的是

  • 在8080端口上启动了Tomcat Web服务器
  • 然后触发了ngrok http 8080

它真的很酷...
试一下...
希望它能为您工作。


0

我通过终止进程来解决了这个问题。只允许4个进程。

首先使用命令top查看您的streamlit进程。您将看到:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

只需键入kill PID [PID VALUE]并重新运行单元格即可。


0

我曾经遇到过同样的问题,

因为我忘记运行本地主机的3000端口,这个端口应该运行一些Node服务器。

在我运行Node服务器之后,我再运行ngrok http 3000,这样它就可以将那个Node服务器云化到ngrok中,以便全球范围内访问互联网。


0

我不得不同时使用(1)@user6483104的答案(2)使用项目中定义的非安全URL启动我的ngrok隧道(而不是SSL URL 即https)。

在这里查看我的答案:如何配置Visual Studio 2017以公开ASP.Net MVC https站点中的非加密端口

注意:如果我关于存在默认的非安全URL是错误的,则此答案(如何在Visual Studio 2017 Web Proj ASP.NET Core 2.0中禁用Https)声称有一种禁用安全URL的解决方案。我没有尝试它,因为我的现有项目中已经定义了一个非安全URL(我怀疑您的项目也是如此)

enter image description here


0

我必须输入我的服务器IP地址,现在运行得非常完美!

./ngrok http [服务器IP]:5000


0

如果你想托管本地服务,那么你需要使用的命令是:ngrok http 8000。 如果它仍然无法工作并显示相同错误,则可以使用以下命令重写主机标头:ngrok http 8000 --host-header rewrite


0
有时候导致这个错误的原因是你的防火墙阻止了连接。 要访问Windows防火墙:
  1. 按win + r键
  2. 输入firewall.cpl
  3. 转到允许应用程序通过Windows Defender
  4. 下面点击允许其他应用程序。
  5. 找到ngrok.exe文件。

这对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接