Я пытаюсь настроить свой сервер с сервером Minecraft на нестандартный порт с перенаправлением поддомена, который при переходе на Minecraft перейдет на его правильный порт или при переходе через веб-браузер отобразит веб-страницу. то есть:
**Minecraft**
minecraft.example.com:25565 -> example.com:25465
**Web Browser**
minecraft.example.com:80 -> Displays HTML Page
Я пытаюсь сделать это, используя следующие VirtualHosts в Apache:
Listen 25565
<VirtualHost *:80>
ServerAdmin matt@example.com
ServerName minecraft.example.com
DocumentRoot /var/www/example.com/minecraft
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/example.com/minecraft/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:25565>
ServerAdmin matt@example.com
ServerName minecraft.example.com
ProxyPass / http://localhost:25465 retry=1 acquire=3000 timeout=6$
ProxyPassReverse / http://localhost:25465
</VirtualHost>
Выполняя эту конфигурацию, когда я перехожу на minecraft.example.com, я могу видеть файлы в папке /var/www/example.com/minecraft/, однако, если я пытаюсь подключиться в minecraft, я получаю исключение, а в браузер я получаю страницу со следующей информацией:
minecraft.example.com:25565 ->
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /.
Reason: Error reading from remote server
Может ли кто-нибудь поделиться пониманием того, что я делаю неправильно, и какое наилучшее решение было бы исправить это?
Протокол сервера Minecraft - это не HTTP, поэтому вы не можете проксировать подобные запросы.
Предполагая, что вы работаете в Linux, используйте iptables для перенаправления TCP-порта. Вы по-прежнему можете запускать Apache на порту 80 на том же IP, но удалите директиву Listen и соответствующий vhost в своей конфигурации.
Правило IPTables должно выглядеть примерно так:
iptables -t nat -A PREROUTING -p tcp -d --dport 25565 -j DNAT --to 127.0.0.1:25465
Не забудьте, конечно, разрешить трафик с записью в цепочке INPUT / OUTPUT.
iptables -t nat -A PREROUTING -p tcp -d 12.13.14.15 --dport 25565 -j DNAT --to 127.0.0.1:25465
куда 12.13.14.15
это IP-адрес minecraft.example.com
.
ОБРАТИТЕ ВНИМАНИЕ, ЧТО ВЫ НЕ МОЖЕТЕ ИСПОЛЬЗОВАТЬ ДЛЯ ЭТОГО ВИРТУАЛЬНЫЙ ХОСТИНГ. Если вы хотите разместить server1.example.com и minecraft.example.com на одном и том же общедоступном IP-адресе, оба будут выполнять такое перенаправление на уровне порта ... извините, этого не произойдет. Такое случается перед уровень HTTP, поэтому виртуальный хостинг к нему не имеет отношения. :)