マインクラフトでバニラサーバーとMODサーバーを立てた際、Nginxのリバースプロキシができるか試した時の話
あらすじ
・Minecraftサーバーをを同一サーバー上で2つ立てた
・ポート番号をそれぞれ書くのがめんどくさい
・サブドメイン変えるだけで入れるようにしたい!
方法1- Nginxのリバースプロキシ
リバースプロキシとは、クライアントからのリクエストを受け取り、
それをバックエンドのサーバーに中継するプロキシサーバーのこと
通常複数のホームページなどを同一IPでホストするときに使う。
abc.example.com => localhost:80
def.example.com => localhost:81
などサブドメインを判別し、接続先を振り分けてくれる。
マイクラのサーバーにも使えるのでは?
abc.example.com => localhost:25565
def.example.com => localhost:25566
結果:接続できなかった
MinecraftのサーバーはTCP通信だがTCPの規格上、HTTP通信のようにサブドメインを検出することができず振り分けができないらしい
方法2 - SRVレコードを使う
SRVレコードは、"Service"レコードの略で、ドメインネームシステム(DNS)で使用される一種のリソースレコードです。サービスが利用するポート番号を指定することができます。
DNSで名前解決する段階でport番号も一緒に送られてくる便利なレコードらしい。
やってみる
DNSサーバー: Cloudflare
接続したいサーバー
example.com => IPアドレス:25565
mc.example.com => IPアドレス:25566
結果:接続できた
あっさりと繋がった。実はネット上の多くの文献にはminecraftサーバーではSRVレコードは使えないと書かれていたため、ダメ元でやってみたのだが全く問題なく繋がった。
Minecraftサーバーのバージョンにもよるのかもしれないが、1.20.1では使用できる