ServBayにおけるPinggyリバースプロキシサービス展開ガイド
Pinggyは使いやすい内部ネットワークのトンネリングツールで、リバースプロキシ技術を通じて、ローカルサービスを安全にパブリックネットワークに公開します。本ガイドでは、ServBay環境でPinggyを使用してローカルWebサービスをインターネットからアクセスできるようにする手順を詳しく説明します。
技術原理
Pinggyは安全なSSHトンネルを構築することで、NATやファイアウォールの背後にあるローカルサービスを公開ネットワークにマッピングします。ServBayのアプリケーションシーンにおいて、これにより開発者はローカルでデバッグしているWebサービスをリアルタイムで外部に公開でき、チームコラボレーションやリモートテスト、デモに便利です。
環境準備
クライアントをインストールする必要はありません!Pinggyの最大の利点の一つは、ローカルコンピュータにソフトウェアをインストールする必要がないことです。SSHをサポートするターミナルさえあれば大丈夫です。
トンネル設定実践
コアコマンド
Pinggyを使用してトンネルを構築するのは非常に簡単です。ターミナルで以下のコマンドを実行するだけです:
ssh -p 443 -R0:localhost:443 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected] x:localServerTls:servbay.new "u:host:servbay.new"
パラメータコンポーネント | 機能説明 |
---|---|
-p 443 | Pinggyサーバに接続するSSHポートを443(HTTPSのデフォルトポート)に指定します。 |
-R0:localhost:443 | リモートポート転送です。0 はPinggyサーバが自動でランダムポートを割り当てることを示します。localhost:443 は、リモートポートをローカルの443ポート(HTTPS)に転送します。 |
-o StrictHostKeyChecking=no | SSHホストキーの確認を無効にします(最初の接続やテスト時には便利ですが、本番環境では推奨しません)。 |
-o ServerAliveInterval=30 | 30秒ごとにkeep-aliveメッセージを送信し、SSH接続を維持します。 |
-t [email protected] | Pinggyのユーザー名とサーバアドレスです。 |
x:localServerTls:servbay.new | Pinggyのカスタムパラメータで、ローカルサーバのTLSドメイン名を servbay.new に指定します。 |
"u:host:servbay.new" | Pinggyのカスタムパラメータで、受信リクエストのHost ヘッダーを servbay.new に設定します。 |
コマンドが成功すると、アクセス用のURLが出力されます。
http://rnirh-172-188-50-148.a.free.pinggy.link
https://rnirh-172-188-50-148.a.free.pinggy.link
2
サービス検証
curl
による検証(推奨):curl
コマンドを使用してテストします。
curl -I https://rnirh-172-188-50-148.a.free.pinggy.link
出力内容は以下の通りです。
HTTP/1.1 200 OK
Connection: close
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin: *
Cache-Control: max-age=0, must-revalidate, no-cache, no-store, private
Connection: keep-alive
Content-Type: text/html; charset=UTF-8
Date: Tue, 18 Feb 2025 11:51:48 GMT
Expires: Sun, 02 Jan 1990 00:00:00 GMT
Pragma: no-cache
Server: nginx
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
X-Powered-By: PHP/8.4.3
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ブラウザアクセス: ブラウザで
https://rnirh-172-188-50-148.a.free.pinggy.link
に直接アクセスします。予想結果:
- ローカルServBayサービスと一致するWebコンテンツが表示されます。
- ローカルサービスがHTTPSに設定されている場合、Pinggyも自動的にHTTPSをサポートします。
- レスポンスタイムは通常速いです(ローカルネットワークとPinggyサーバへの接続次第です)。
高度なテクニック
カスタムドメイン: Pinggy Proユーザーはカスタムドメインを使用できます。詳細はPinggyのドキュメントを参照してください。
TCPトンネル: HTTP/HTTPS以外のサービスの場合、PinggyのTCPトンネル機能を使用できます:
bashssh -R <REMOTE_PORT>:localhost:<LOCAL_PORT> a.pinggy.io
1<REMOTE_PORT>
はPinggyサーバで使用したいポートに置き換えてください。持続的トンネル(
autossh
使用): ネットワークが不安定な場合や長時間トンネルを開いておきたい場合は、autossh
の使用を推奨します。autossh
はSSHの切断後、自動で再接続します。
トラブルシューティング
現象 | 解決策 |
---|---|
接続タイムアウト | ServBayサービスが実行中であるか、 <LOCAL_PORT> が正しいかを確認してください。 |
404エラー(見つかりません) | バーチャルホストを使用している場合、curl コマンドを「設定例」の説明に従って正しいHost ヘッダーで使用していることを確認してください。 |
Pinggy URLにアクセスできない | ネットワーク接続を確認し、a.pinggy.io にアクセスできることを確認してください。 |
断続的な切断 | これはネットワークが不安定である場合があります。autossh を使用してより安定した接続を確立することを検討してください(「高度なテクニック」セクションを参照)。 |
方案まとめ
Pinggyを使用すると、開発者はServBay環境で非常に簡単かつ迅速に安全なパブリックアクセスの通路を構築できます。このソリューションには以下の利点があります:
- クライアントのインストール不要: 設定プロセスが簡素化され、依存関係が減少します。
- ワンクリック操作: 一つのSSHコマンドでトンネルを起動できます。
- 自動HTTPSサポート: SSL証明書を手動で設定する必要がありません。
- HTTPおよびTCPトンネルのサポート: 様々なタイプのサービスニーズに対応します。
- トークン不要のコマンド: URLを直接共有でき、トークンの漏洩を心配する必要がありません。
PinggyはNgrokよりも便利な方法を提供し、特にローカルサービスを迅速にテストし、一時的に共有するのに適しています。長期間安定して運用する必要がある場合やカスタムドメインのシナリオには、PinggyのProバージョンを検討できます。