在特定情況下,若想使用同個 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