【问题标题】:Ngrok errors '502 bad gateway'Ngrok 错误“502 错误网关”
【发布时间】:2017-03-28 15:53:11
【问题描述】:

对于使用任何类型的 Web 应用程序都很陌生,我一直在尝试慢慢构建 Facebook Messenger Bot。当我尝试使用 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.

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

【问题讨论】:

  • 你真的可以访问 localhost:5000 吗?
  • 既然你提到了,我不能?为什么会这样?
  • 你有服务器监听那个端口吗?
  • 不,好像没有,我该如何改变?
  • 或者我最好只使用正在监听的端口?

标签: https ngrok http-tunneling


【解决方案1】:

这对我有用

ngrok.exe http -host-header=rewrite localhost:<Your Port number>

例如:

ngrok.exe http -host-header=rewrite localhost:5219

我正在使用 Visual Studio 2017,不知道它是否会影响任何东西。

【讨论】:

  • 我还必须在本地显式定向到 https。 IE。 ngrok http https://localhost:8080 -host-header="localhost:8080"
  • 这是我的命令(Windows 10):ngrok http 5000 -host-header=rewrite --subdomain
【解决方案2】:

尝试显式设置本地IP:

ngrok http 127.0.0.1:5000 而不是ngrok http 5000

祝你好运!

【讨论】:

  • 哇。我希望我能再次投票和投票。这救了我的脖子。
【解决方案3】:

正如@njzk2 应该说的,如果您没有运行 Web 服务器,那么它就无法工作。如果您仍然感到困惑,我想让您更清楚。

ngrok 所做的是让您的本地服务器(在 localhost 上运行)对外部世界(互联网的其余部分)可用。就其本身而言,它不是一个 Web 服务器。因此,对于您的机器人开发,您需要在定义的端口(在您的情况下为 5000)上运行一个 Web 服务器。然后您可以将 ngrok 指向此端口,以便它将发送到您的公共地址的请求重定向到在该端口上运行的程序。 然后,Web 服务器将接受并处理来自 Facebook 的请求

【讨论】:

    【解决方案4】:

    我发现我必须删除 -host-header 部分周围的引号才能使其与最新的 ngrok 版本 (2.3.35) 一起使用:

    ngrok http https://localhost:5001 -host-header=localhost:5001

    (目前没有足够的代表在上述任何答案上添加 cmets)

    【讨论】:

    • 为这个有用的答案添加赞成票。
    【解决方案5】:

    第 1 步 - 注册到 ngrok 并在仪表板页面中下载 .exe 文件

    第 2 步 - 打开终端并从仪表板复制并粘贴不带 ./

    的行

    第 3 步 - 运行您的本地主机

    第 4 步 - 如果第 2 步成功完成,请在同一终端(第 2 步)中粘贴您的本地主机端口行

    ngrok http https://localhost:44386 -host-header="localhost:44386"

    第 5 步 - 复​​制终端中生成的 URL,然后 waalla.. 你可以 ping 到它。


    如果出现 >>> 将 https 更改为 http,因此第 4 步将是 ngrok http http://localhost:44386 -host-header="localhost:44386"

    【讨论】:

    • 你是我的英雄:")))
    【解决方案6】:

    尝试如下:

    ngrok http 127.0.0.1:8080 -host-header="127.0.0.1:8080"

    【讨论】:

    • 您的答案很接近,但仍然对我不起作用。您的建议只需稍作修改即可ngrok http https://localhost:44398 -host-header="localhost:44398"
    【解决方案7】:

    现在看来这个问题已经在最新版的ngrok中解决了:https://github.com/inconshreveable/ngrok/issues/448

    基本上,您所做的是指定您使用的是这样的 https:

    ngrok http https://localhost:54321 -host-header="localhost:54321"
    

    至少,这为我解决了这个问题。将 54321 替换为您的实际端口号。

    【讨论】:

      【解决方案8】:

      如果您尝试使用 ngrok 指向 https localhost url,请设置代理。

      查看这个 github 问题评论:

      https://github.com/inconshreveable/ngrok/issues/448#issuecomment-414214242

      【讨论】:

        【解决方案9】:

        在我的例子中,它是 Visual Studio 2017 .Net Core 2.1 中的项目,它被创建为使用带有自签名证书的 https。如果你不需要你的 localhost 是 https,那么对我来说修复它的是创建一个新的 web 项目并取消选中 https。当您运行 ngrok (ngrok http port-number-from-IISExpress) 时,它会为您提供可用于开发的 https url。

        【讨论】:

          【解决方案10】:

          对我来说,将协议从 http 切换到 tls 是可行的,因为我只转发安全连接。我不需要重写标题。

          仅出于上下文考虑,我将连接转发到 Ubuntu 16 上正在运行的 docker 容器。

          PS:你仍然在浏览器中使用https访问地址,而不是tls。

          【讨论】:

            【解决方案11】:

            确保服务器监听 NGROK 所在的同一个端口

            在我的例子中,我使用“ngrok HTTP 3002”运行 ngrok,而我的 express 服务器在端口 5000 上运行,因此引发 BAD GATEWAY 错误。

            我在端口 5000 上重新启动了 ngrok,它就像一个魅力一样工作。

            【讨论】:

              【解决方案12】:

              因为这个,我几乎失去了一天,如果该功能没有运行,它不会只是启动虚拟主机。在启动 ngrok 之前,您需要在本地运行该函数

              https://docs.microsoft.com/en-us/azure/azure-functions/functions-debug-event-grid-trigger-local

              它为我工作

              【讨论】:

                【解决方案13】:

                如果您有将 HTTP 重定向到 HTTPS 的 HTTP 规则,则会发生此错误。

                您可以为您的开发者机器禁用此功能,或根据 X-Original-Host 标头添加自定义规则:

                我正在使用 IIS 重写插件,这就是我修复它的方法

                 <rule name="Redirect to https" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
                            <match url=".*" negate="false" />
                            <conditions logicalGrouping="MatchAll">
                              <add input="{HTTPS}" pattern="off" />
                
                              <add input="{HTTP_X_Original_Host}" pattern="yourngrokname.ngrok.io" negate="true" />             
                
                            </conditions>
                            <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Found" />
                          </rule>
                

                【讨论】:

                  【解决方案14】:

                  我必须同时使用 (1) 来自@user6483104 的答案(2) 使用我的项目中定义的不安全 URL 启动我的 ngrok 隧道(与 @ 987654325@ 即https)。

                  在这里查看我的答案: How to configure Visual Studio 2017 to expose a non-encrypted port in a ASP.Net MVC https site

                  注意:如果我对存在默认的不安全 URL 有误,此答案 (How To Disable Https in Visual Studio 2017 Web Proj ASP.NET Core 2.0) 声称有禁用安全 URL 的解决方案。我没有尝试,因为在我现有的项目中已经定义了一个不安全的 URL(我怀疑你的也有)

                  【讨论】:

                    【解决方案15】:

                    由于 ngrok 无法从 Localhost 接收任何响应,因此发生 502 网关错误。

                    需要做的事情是:

                    1. 在端口中启动网络服务器
                    2. 在该端口中触发 ngrok 命令。

                    我所做的是

                    • 在 8080 中启动了一个 tomcat Web 服务器
                    • 然后触发 ngrok http 8080

                    它真的很酷......
                    试试这个.....
                    希望它对你有用。

                    【讨论】:

                      【解决方案16】:

                      如果您只是想使用 ngrok 拦截传入的数据,并且由于某种原因没有本地网络服务器,那么您可以使用 ncat

                      nc -l 5000

                      这将创建一个侦听端口 80 的进程。

                      所以当与

                      结合使用时

                      ngrok http 5000

                      您将不再收到“502 bad gateway”错误。

                      【讨论】:

                        【解决方案17】:

                        我必须输入我的服务器 ip 地址并且完美运行!

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

                        【讨论】:

                          【解决方案18】:

                          我有同样的问题,

                          因为,我忘了运行 localhost:3000 端口,它应该运行一些节点服务器。

                          在我运行节点服务器之后,然后我运行 ngrok http 3000,这样它就会将 ngrok 中的节点服务器云化,以便在互联网上进行全球访问。

                          【讨论】:

                            【解决方案19】:

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

                            第一个命令top 查看您的流线型流程。你会看到:

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

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

                            【讨论】:

                              【解决方案20】:

                              我终于成功了?

                              ngrok http 80 
                              

                              然后在你的 localhost:80 上启动另一个服务...在我的情况下,我使用这些

                              php -S localhost:80
                              

                              对于反向壳的东西..

                              nc -nlvp 80
                              

                              您的问题现已解决。 ^_^

                              【讨论】:

                                猜你喜欢
                                • 2016-07-04
                                • 2018-08-14
                                • 2020-08-04
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2017-07-07
                                • 2022-01-07
                                • 2021-07-21
                                相关资源
                                最近更新 更多