Ошибки 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"
Ответ 4
Если вы пытаетесь использовать ngrok для указания URL-адреса локального хоста https, установите прокси-сервер.
посмотрите этот комментарий к проблеме с github
https://github.com/inconshreveable/ngrok/issues/448#issuecomment-414214242
Ответ 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-адрес (поскольку я подозреваю, что есть и с вашим)
![введите описание изображения здесь]()