Ошибки Ngrok "502 плохой шлюз"

Совершенно новый подход к использованию каких-либо приложений для веб-приложений, и я пытался медленно создавать бонус 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

Но когда я беру адрес https://ea986ca5.ngrok.io ', как требуется на странице разработчиков Facebook, он говорит:

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

Так же, как @njzk2 должен был сказать, если у вас нет веб-сервера, поэтому он не может работать. Я хотел бы уточнить, если вы все еще смущены.

Что делает ngrok, это сделать ваш локальный сервер (работающий на локальном хосте) доступным для внешнего мира (остальная часть Интернета). Само по себе это не веб-сервер. Итак, для вашей бот-разработки вам нужно иметь веб-сервер, работающий на определенном порту (который в вашем случае равен 5000). Затем вы можете указать ngrok на этот порт, чтобы он перенаправлял запросы, отправленные на ваш общий адрес, в программу, запущенную на этом порту. Затем веб-сервер принимает и обрабатывает запросы от Facebook

Ответ 2

Это сработало для меня

ngrok.exe http -host-header = переписать localhost:

Например, ngrok.exe http -host-header = переписать localhost: 5219

Im, использующий визуальную студию 2017, не знает, влияет ли это на что-то.

Ответ 3

Попробуйте как показано ниже:

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

Ответ 5

В моем случае это был проект в Visual Studio 2017. Net Core 2.1 был создан для использования https с самозаверяющим сертификатом. Если вам не нужен локальный хост для https, то для меня это помогло создать новый веб-проект и снять флажок https. Когда вы запускаете ngrok (ngrok http port-number-from-IISExpress), он предоставляет вам https URL, который вы можете использовать для разработки.

Ответ 6

Эта ошибка может возникнуть, если у вас есть правило HTTP для перенаправления HTTP на HTTPS.

Вы можете отключить это для своей машины разработчика или добавить настраиваемое правило на основе заголовка 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>

Ответ 7

Для меня переключение протокола с http на tls сработало, так как я пересылаю только защищенное соединение. Мне не нужно было переписывать заголовок.

Просто для контекста, я пересылаю соединение с работающим док-контейнером в Ubuntu 16.

PS: Вы по-прежнему обращаетесь к адресу с помощью https в браузере, а не по tls.

Ответ 8

Попробуйте явно указать локальный IP-адрес:

ngrok http 127.0.0.1:5000 вместо ngrok http 5000

Удачи!

Ответ 9

Произошла ошибка шлюза 502, потому что ngrok не смог получить ответ от Localhost.

Что нужно сделать, это: 1. Запустите веб-сервер в порту 2.Триггер ngrok в этом порту.

Что я сделал, так это -> Запущен веб-сервер Tomcat в 8080 году. -> Затем сработал нгрок http 8080.

Это работает действительно Kool.. Попробуй это.. Надеюсь, это работает для вас.

Ответ 10

Мне пришлось использовать как (1) ответ от @user6483104, так и (2) запустить мой туннель ngrok с использованием незащищенного URL, определенного в моем проекте (vs SSL URL т.е. https).

Посмотрите мой ответ здесь: Как настроить Visual Studio 2017 на показ нешифрованного порта на сайте https ASP.Net MVC

Примечание. Если я ошибаюсь в том, что существует необработанный URL по умолчанию, этот ответ (Как отключить Https в Visual Studio 2017 Web Proj ASP.NET Core 2.0) утверждает, что имеет решение отключить защищенный URL. Я не пробовал, потому что в моем существующем проекте уже был незащищенный URL-адрес (поскольку я подозреваю, что есть и с вашим)

введите описание изображения здесь