После некоторого времени заниматься хостинга несколько ванильный и модавый Minecraft серверы для друзей, мне пришлось дать им IP-адрес с номер порта для подключения. Каждый раз, когда я создавал новый сервер, будь то стандартный или модифицированный. Со временем это стало меня раздражать, особенно необходимость указывать на маршрутизаторе разные номера портов для каждого сервера. Я хотел более чистую настройку с более аккуратным адресом, который не требует указания порта, а вместо этого использует доменные имена для указания на конкретные Minecraft серверы.
Установить HaProxy с помощью вашим Linux управления пакетами:
- Ubuntu и Debian:
apt install haproxy
- Arch Linux:
pacman -S haproxy - Fedora Linux:
dnf install haproxy
После установки HaProxy, перейдите к директория конфигурации HaProxy:
cd /etc/haproxy/
Перед внесением изменений рекомендуется создать резервную копию конфигурации.
mv haproxy.cfg haproxy.cfg.bak
Создайте новой haproxy.cfg файл.
frontend minecraft
bind *:25565
mode tcp
tcp-request inspect-delay 5s
acl is_mc_vanilla payload(4,21) -m sub vanilla.example.home
acl is_mc_creative payload(4,22) -m sub creative.example.home
acl is_mc_modded payload(4,20) -m sub modded.example.home
tcp-request content accept if is_mc_vanilla || is_mc_creative || is_mc_modded
use_backend vanilla_backend if is_mc_vanilla
use_backend creative_backend if is_mc_creative
use_backend modded_backend if is_mc_modded
backend mc_vanilla_backend
server mc_vanilla 192.168.1.5:25565
backend mc_creative_backend
server mc_creative 192.168.1.5:25566
backend mc_modded_backend
server mc_modded 192.168.1.7:25565
Функция payload(Offset, Length). принимает два параметра:
- Offset: Начальная позиция сканирования.
- Length: Определяет, сколько байтов/символы будет сканироваться.
Примечание:
При вычисленииLengthнеобходимо добавить 1 байт/символ к длине домена.
Это гарантирует правильное сканирование всего домена.
Теперь, после настройки прокси, если в будущем я добавлю новый сервер, мне не нужно будет помнить, какой порт был назначен на моем маршрутизаторе, мне нужно будет помнить только, какой домен был назначен.
Here some option quick characters counter
Linux и MacOS bash:
echo "example.com" | wc -c
Windows PowerShell:
echo (("example.com".Length + 1))
Python:
print(len("example.com") + 1)