在特定情況下,若想使用同個 Port 服務多個 Minecraft 伺服器,除了常見的 BungeeCord / Waterfall 區分後端的 backend 伺服器外,亦可以使用強大的 HAProxy 來實現相同功能。
以下是本次的參考設定
設定三個 hostname:mc01.fast-line.tw、mc02.fast-line.tw、mc03.fast-line.tw
frontend fastline
mode tcp
bind 123.45.67.89:25565 #這台主機 Listen 的 IP 與 Port
tcp-request inspect-delay 5s
acl hostname_flag req.payload(5,4) -m sub mc01 #mc01 是你的 hostname
tcp-request content accept if hostname_flag
use_backend mc if hostname_flag
acl hostname_flag2 req.payload(5,4) -m sub mc02 #mc02 是你的 hostname
tcp-request content accept if hostname_flag2
use_backend mc2 if hostname_flag2
acl hostname_flag3 req.payload(5,4) -m sub mc03 #mc03 是你的 hostname
tcp-request content accept if hostname_flag3
use_backend mc3 if hostname_flag3
use_backend mc4 #當連線沒有 hostname 時,使用這組 backend
backend mc #伺服器 1
server minecraft1 1.2.3.4 send-proxy
backend mc2 #伺服器 2
balance roundrobin
server minecraft1 2.3.4.5 send-proxy check
server minecraft2 2.3.4.6 send-proxy check
backend mc3 #伺服器 3
server minecraft1 3.4.5.6:23456 source 7.8.9.10 send-proxy #使用主機上的 7.8.9.10 IP 跟 3.4.5.6 連線
backend mc4 #伺服器 4
server minecraft1 4.5.6.7:12345 send-proxy