オールDocker構成でfrpを使って内網透過(ローカル公開)を試してみたよ。速度も結構いい感じで、遅延も許容範囲内かな。
DNSの設定
自分用のグローバルIPを持つサーバー(VPSなど)が必要。今回はSSL証明書をCloudflareで設定したから、接続はすべて80番ポートを経由させているよ。
ドメインをいくつか設定する。frp接続用のドメイン(例えば frp.example.com)と、プロキシしたいサービス用のドメイン(例えば server1.example.com や server2.example.com)をサーバーに向ける。ここで注意してほしいのが、frp接続用のドメイン(frp.example.com)はCloudflareのプロキシ(オレンジ色の雲アイコン)を有効にせず、「DNSのみ(DNS only)」モードにすること!
サーバー側(frps)
サーバーにfrpをインストールするのは結構簡単。まずは設定ファイル frps.toml を用意しよう。
| |
複雑な token を設定したら、次は docker-compose.yml だよ。
| |
あとはそのまま起動するだけ。
| |
Nginxの設定
frp接続用のドメイン(frp.example.com)を、bindPort = 7000(つまり 172.17.0.1:7000)にリバースプロキシする。
そして、すべてのサービス用ドメインを vhostHTTPPort = 8000(つまり 172.17.0.1:8000)にリバースプロキシする。
Cloudflareのプロキシを使っている関係上、1つのNginx設定ファイルに複数の server_name をまとめて書いちゃうと、最初のドメインしかうまく動かなくなっちゃう。だから、ドメインごとに個別の設定ファイルを作って、それぞれを 172.17.0.1:8000 にリバースプロキシするようにしてね。
クライアント側(frpc)
クライアント側の設定はちょっと複雑かな。設定ファイル frpc.toml はこんな感じ。
| |
次は docker-compose.yml だよ。
| |
あとはそのまま起動するだけ。
| |