web-dev-qa-db-ja.com

(ngrokを使用して)トンネリングを介してローカルホストをインターネットに公開する:HTTPエラー400:要求が正しくありません。無効なホスト名

質問の以前のバージョンから、これがあります: localhost ではなく、ip addressでウェブサイトを閲覧してください。 ..ローカルIPが機能しています。それから私はngrokを見つけました、そしてどうやら私はIP経由で接続する必要はありません。


私がやろうとしているのは、localhostで実行されている私のウェブサイトをインターネットに公開することです。私はこれを行うツールを見つけました:ngrok。

Webサイトをビジュアルスタジオで実行すると、Webサイトはlocalhost/port#で起動します。コマンドラインで "ngrok http port#"コマンドを実行します。すべてうまく起動しているようです。私はいくつかのURLを生成し、ngrokのインスペクションURL(localhost:4040)が動作します。

唯一の問題は、生成されたURLにアクセスするとHTTPエラー400が発生することです。これは "ngrok http wrongport#"を実行したときとは異なるエラーです。これはホストが見つかりませんエラーです...だから何か良いことが起こっていると思います。わかりませんが….

自分のサイトをトンネリングサービスを介してインターネットに公開するために欠けているステップはありますか?もしあれば、ngrokのドキュメントには見つかりません。

155
donlan

Ngrokでこの問題を解決してください。控えめに言っても、いくつかのアプリケーションでは、予想とは異なるHostヘッダーが表示されると怒ります。

次のコマンドを実行すると問題が解決します。

ngrok http [port] -Host-header="localhost:[port]"
419
donlan

これは私にはうまくいきませんでした。次のことができます。

IIS Expressの場合

VS 2015の場合:プロジェクトの.vs\config\applicationhost.configフォルダに移動します。

VS 2013以前の場合:%USERPROFILE%\My Documents\IISExpress\config\applicationhost.configに移動します

次のようなバインディングを見つけます。

<binding protocol="http" bindingInformation="*:5219:localhost" />

私にとっては、ポート5219で実行中のプロジェクトでした

に変更

  <binding protocol="http" bindingInformation="*:5219:" />

IIS Expressはそのポートでのすべての着信接続を受け入れるようになります。

デメリット:adminとしてIIS Expressを実行する必要があります。

または、NgrokのHostヘッダーを書き換えることもできます。

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

次のコマンドは問題を解決します

ngrok http -Host-header=localhost 8080
29
Sathish

私にとって最も簡単なことは iisexpress-proxy + ngrokを使用することでした。

最初にnpmを使ってiisexpress-proxyをグローバルにインストールします。

npm install -g iisexpress-proxy

それから私はそれで私のローカルホストを代理します。たとえば、私のサイトが3003で実行されているとします。

iisexpress-proxy 3003 to 1234512345がプロキシしたい新しいhttpポートです。

それから私はそれでngrokを実行することができます。

./ngrok.exe http 12345

それだけでうまくいきます! ????

しかし、私はそれがhttpでのみうまくいくと思います。今のところ私はhttpsを使ってテストすることはしていませんが、たとえそれがうまくいったとしても、いつものように多くの作業が必要です。

0
Reuel Ribeiro