web-dev-qa-db-ja.com

Ngrokエラー「502 bad gateway」

あらゆる種類の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.

ローカルポートに問題がありますか?ありがとう!

26
Jordan Cagney

これは私のために働いた

ngrok.exe http -Host-header = rewrite localhost:

例:ngrok.exe http -Host-header = rewrite localhost:5219

Visual Studio 2017を使用しているImは、何か影響があるかどうかわかりません。

17
user6483104

@ njzk2が言ったように、Webサーバーが実行されていない場合は動作しません。あなたがまだ混乱している場合、私はあなたにそれを明確にしたいと思います。

ngrokは、ローカルサーバー(localhost上で実行)を外部(インターネットの残りの部分)で使用できるようにすることです。それ自体は、Webサーバーではありません。したがって、ボットの開発には、定義されたポート(この場合は5000)で実行されているWebサーバーが必要です。次に、ngrokをこのポートにポイントして、パブリックアドレスに送信された要求をそのポートで実行されているプログラムにリダイレクトできるようにします。 Webサーバーは、Facebookからのリクエストを受け入れて処理します

17
Ken4scholars

以下のようにしてください:

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

3
licaomeng

私の場合、それはVisual Studio 2017のプロジェクトでした。NetCore 2.1は、自己署名証明書でhttpsを使用するために作成されました。 localhostをhttpsにする必要がない場合は、新しいWebプロジェクトを作成し、httpsのチェックを外してください。 ngrok(ngrok http port-number-from-IISExpress)を実行すると、開発に使用できるhttps URLが提供されます。

2
Cliff Coulter

Ngrokを使用してhttps localhost URLを指すようにする場合は、プロキシをセットアップします。

このgithubの問題のコメントを参照してください:

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

2
Davious

私にとっては、安全な接続のみを転送しているため、プロトコルをhttpからtlsに切り替えることはできました。ヘッダーを書き換える必要はありませんでした。

コンテキストのために、Ubuntu 16で実行中のdockerコンテナーに接続を転送しています。

PS:tlsではなく、ブラウザーでhttpsを使用してアドレスにアクセスします。

0
AndyFaizan

Localhost IPを明示的に設定してみてください。

ngrok http 127.0.0.1:5000 の代わりに ngrok http 5000

幸運を!

0
Sasha

このエラーは、HTTPをHTTPSにリダイレクトするHTTPルールがある場合に発生する可能性があります。

開発者のマシンでこれを無効にするか、X-Original-Hostヘッダーに基づいてカスタムルールを追加できます。

IIS rewriteプラグインを使用しています。これが修正方法です

 <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