🚇
ngrokはどう動くのか?
リバーストンネルでローカルサーバーをインターネットに公開
ngrokの核心は「リバーストンネル」です。PC上のngrokエージェントがngrokクラウドサーバーにアウトバウンドTCP/TLS接続を先に確立します。ngrokクラウドが公開URL(例:abc123.ngrok.io)を割り当て、このURLへの外部HTTPリクエストをトンネル経由でローカルサーバーに転送します。ポートフォワーディングやファイアウォール設定なしでローカルサービスをインターネットに公開できる理由がまさにこれです。
構造ダイアグラム
🌍
外部クライアント
ブラウザ / Webhook
④ HTTPリクエスト
→
☁️
ngrok Cloud
abc123.ngrok.io
公開URL割り当て
⑤ トンネル転送
② アウトバウンドTLS
←
🚇
💻
マイPC(ファイアウォール内)
ngrok agent
localhost:3000
ポイント: ngrok agentが<strong>先にアウトバウンド接続</strong>を開くためファイアウォール/NAT設定が不要
フロー説明
ngrok http 3000実行- agentがngrokクラウドにアウトバウンドTLSトンネルを確立
- 公開URL(abc123.ngrok.io)割り当て
- 外部トラフィックが公開URLに到着
- ngrokクラウドがトンネル経由でローカルに転送
- ローカルレスポンスがトンネル経由で外部に返却
動作フロー
1
ngrokエージェントがローカルで実行(ngrok http 3000)
2
エージェントがngrokクラウドにアウトバウンドTLS接続を確立(リバーストンネル)
3
ngrokクラウドが公開URLを割り当て(abc123.ngrok.io)
4
外部クライアントが公開URLにHTTPリクエストを送信
5
ngrokクラウドがトンネル経由でリクエストをローカルサーバーに転送
6
ローカルサーバーの応答がトンネルを通じて外部クライアントに返却
メリット
- ✓ ファイアウォール/NAT背後でも動作
- ✓ 公開URLを即時生成
- ✓ HTTPS自動サポート
- ✓ ポートフォワーディング不要
デメリット
- ✗ ngrokクラウドへの依存(単一障害点)
- ✗ 無料プランの制限(セッション時間、帯域幅)
- ✗ レイテンシー追加(クラウド経由)
- ✗ 本番用途には不適合
ユースケース
Webhookローカル開発/デバッグ
モバイルアプリからのローカルAPIテスト
デモ/プレゼンテーション
IoTデバイスへのリモートアクセス