web-dev-qa-db-fra.com

Erreurs de Ngrok '502 mauvaise passerelle'

C'est assez nouveau d'utiliser n'importe quelle application Web, et j'ai essayé de créer lentement un bot de messagerie instantanée Facebook. Lorsque j'essaie d'utiliser ngrok, je ne peux pas visiter l'adresse qui m'a été donnée, c'est-à-dire:

ngrok http 5000

est ce que je mets dans la ligne de commande, et il retourne ceci:

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

Mais quand je prends l'adresse ' https://ea986ca5.ngrok.io ' comme le requiert la page du développeur de Facebook, elle indique:

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.

Est-ce un problème avec mon port local? Merci!

16
Jordan Cagney

Tout comme @ njzk2 aurait dû le dire, si vous n'avez pas de serveur Web en cours d'exécution, cela ne peut pas fonctionner. Je voudrais que ce soit plus clair pour vous, si vous êtes toujours confus.

Ce que ngrok fait, est de rendre votre serveur local (fonctionnant sur localhost) accessible au monde extérieur (reste de l’Internet). En soi, ce n'est pas un serveur Web. Donc, pour votre développement de bot, vous devez avoir un serveur Web fonctionnant sur un port défini (qui est dans votre cas 5000). Ensuite, vous pouvez pointer ngrok sur ce port afin qu’il redirige les demandes envoyées à votre adresse publique vers le programme exécuté sur ce port . Le serveur Web acceptera et traitera les demandes de Facebook.

12
Ken4scholars

Cela a fonctionné pour moi 

ngrok.exe http -Host-header = réécrire localhost:

par exemple, ngrok.exe http -Host-header = réécrire localhost: 5219

J'utilise Visual Studio 2017, je ne sais pas si cela n'a aucun effet.

10
user6483104

Si vous essayez d'utiliser ngrok pour pointer sur une URL https localhost, configurez un proxy.

voir ce commentaire de problème github:

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

1
Davious

Dans mon cas, c'était le projet dans Visual Studio 2017. Net Core 2.1 avait été créé pour utiliser https avec un certificat auto-signé. Si vous n'avez pas besoin que votre hôte local soit https, alors ce qui a été résolu, a été de créer un nouveau projet Web et de décocher https. Lorsque vous exécutez ngrok (ngrok http numéro-de-port-à partir de IISExpress), il vous fournit une URL https que vous pouvez utiliser pour le développement. 

0
Cliff Coulter

Pour moi, le passage du protocole de http à tls a fonctionné puisque je ne transfère qu'une connexion sécurisée. Je n'avais pas besoin de réécrire l'en-tête.

Juste pour le contexte, je transmets une connexion à un conteneur de menu fixe en cours d'exécution sur Ubuntu 16.

PS: Vous continuez d’accéder à l’adresse en utilisant https dans le navigateur, pas en tls.

0
AndyFaizan

Essayez de définir explicitement l’IP localhost: 

ngrok http 127.0.0.1:5000 au lieu de ngrok http 5000

Bonne chance!

0
Sasha

Cette erreur peut se produire si vous avez une règle HTTP pour rediriger HTTP vers HTTPS.

Vous pouvez le désactiver pour votre ordinateur développeur ou ajouter une règle personnalisée basée sur l'en-tête X-Original-Host:

J'utilise le plug-in de réécriture IIS et voici comment je l'ai corrigé

 <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>
0
Simon_Weaver