Назад | Перейти на главную страницу

Поддомен перенаправления сервера Apache на порт

Я пытаюсь настроить свой сервер с сервером 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, поэтому виртуальный хостинг к нему не имеет отношения. :)