У меня есть [игровой] сервер (CentOS), на котором используется около 10 портов. В частности, для одной игры у меня есть 2 сервера: частный и публичный. IP у них одинаковый, поэтому для различения между ними пользователь должен использовать mydomain.com:[portnumber]. Есть ли способ настроить CentOS так, чтобы он автоматически брал что-то вроде subdomain.mydomain.com и преобразовывал его в mydomain.com:[portnumber] или простой localhost: [portnumber]? Для этого нужен DNS?
Спасибо
Если это полностью ваше приложение и вы контролируете свой DNS, вы можете определить SRV
запись для вашей игры. Тогда ваши клиенты должны понять, что вы определили _gamename._tcp.example.com
SRV
запись, чтобы дать пользователю возможность использовать example.com
для доступа к серверу через правильный порт.
Звучит сложно и почти невозможно, если вы просто используете существующий игровой сервер и размещаете его, но это единственный способ включить номер порта в DNS.
Если это невозможно, просто выберите "нормальный" порт для общедоступного сервера (чтобы пользователю не о чем беспокоиться) и "другой" порт для частного сервера (где вы должны указать порт, но база пользователей ограничена, поэтому "общая сумма забот" меньше.)
К сожалению, сделать это невозможно, если только это не предусмотрено как функция конкретных игр, которые вы запускаете.
Вы можете выбрать либо привязать отдельный общедоступный IP-адрес к каждому разному экземпляру одной и той же игры (что не вариант, если у вас есть только один общедоступный IP-адрес), либо указать номер порта, когда вы рассказываете людям о сервере.
Для этого есть обходной путь при работе с HTTP-трафиком, но он работает только потому, что подключающийся клиент разговаривает с сервером и предоставляет серверу информацию о том, к чему, по его мнению, он пытается подключиться (т.е. он сообщает серверу, что он подключается к какому DNS-имени он пытается добраться, когда подключается). Это позволяет серверу выбирать, какой контент предоставлять клиенту. Однако он ничего не переводит на другой порт.
Вы можете сделать это, отредактировав файл apache httpd.conf и добавив перенаправление виртуальных хостов. Конечно, если это ваш сервер, и вы также можете редактировать записи DNS. Например:
NameVirtualHost ip.add.of.server
<VirtualHost ip.add.of.server>
ServerName yourserver.domain.com
Redirect permanent / http://yourserver.domain.com:PORT
</VirtualHost>
<VirtualHost ip.add.of.server>
ServerName yourserver2.domain.com
Redirect permanent / http://yourserver.domain.com:PORT
</VirtualHost>
yourserver2.domain.com может быть тем же сервером, вы должны добавить новую запись A в DNS.
У вас есть эти решения, которые легко реализовать: