0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NginxでMinecraft BE用のUDP Proxyをたてる

Last updated at Posted at 2022-08-14

環境

さくらのVPS
-> Mem:1G
-> OS: Ubuntu20.04LTS
-> Nginx: 1.22.0

NginxとUDPproxy

VPSを借りてMinecraftマルチプレイサーバー(Java版、統合版クロスプレイ)のためのプロキシサーバーを立てようと思いついた。
Java版の通信についてはVPSにHAproxyを置いて対応した。
しかし統合版の通信はUDPなのでTCPにしか対応していないHAproxyでは通信を捌くことが出来ない。
そこでUDPについてはNginxを用いることにした。
(Webサーバーなのにプロキシサーバーとしても使えるらしい。そしてTCP・UDPともに対応している)

Nginxの導入

sudo apt install nginxで取得できるNginxは最新バージョンではないので使わない。
適当なディレクトリを作成してwgetでNginxを取得する。
Nginx公式(http://nginx.org/en/download.html) に飛んでStableの左から2つ目のリンクをコピーしてwget [コピーしたリンク]で取得。

.tar.gz形式のファイルがゲットできるのでtarコマンドで解凍&展開

(https://gakumon.tech/nginx/nginx_install_option.html) を参考にして
./configureの引数を書く
今回は./configure --with-streamを実行すれば必要なものは集まる

checking for C compiler ... not found

./configure: error: C compiler cc is not found

と言われてプロセスが停止したら、sudo apt install gcc を実行して C 言語のコンパイラをインストールしたのちに再実行してください。

./configureを実行したらmakeを実行

処理が終わったらmake installを実行
(パーミッション関連のエラーが出たらsudoをつけて実行)

.confを書く

minecraft-udp.confのように名前を付けて保存する。
デフォルトのコンフィグファイルと同じ階層に置く。
(ここでは/etc/nginx/nginx.confと同じ階層)

※自宅のグローバルIPアドレス、使用するポートは自分の環境に合わせて変えてください

minecraft-udp.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 1024;
}

stream {
    upstream backend {
    server 自宅のグローバルIPアドレス:使用するポート;
    }

    server {
        listen 使用するポート udp;
        proxy_pass backend;
    }
}

4行目のinclude(以下略)を抜かしてしまうと必要なモジュールが読み込まれず、起動時にエラーを吐くので書き忘れてはいけない

configファイルのテスト

/usr/sbin/nginx -t -c /etc/nginx/minecraft-udp.conf
を実行すると先ほど書いたコンフィグファイルの構文チェックを行うことができる。
ここでエラーが出た場合はその文に従って修正すること。

user関係のエラーがでるようであればuser nobody nogroup;にして試してみると良い。

/usr/sbin/nginx の部分はパスを通していればその通りに書く必要は無い。
これ以降の説明でも同様。

動かす

nginxだけで動かそうとするとデフォルトコンフィグを使われてしまう。
先ほど書いたminecraft-udp.confに書いた設定を適用してNginxを動かしたいのでコマンドを変える。
参考(https://www.server-memo.net/server-setting/nginx/nginx-command.html)
/usr/sbin/nginx -c /etc/nginx/minecraft-udp.conf
と打つと、Nginxが先ほど書いたminecraft-udp.confの設定を適用して動いてくれる。
(/usr/sbin/nginxの部分は環境により異なる可能性あり)

経過

稀に通信が不安定になることがあるが、よく動いてくれている。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?