Если вы находитесь за пределами веб-мира, у вас есть идеальное решение для этого, оно называется SRV
records. По сути, они являются обобщением того, что MX
записи сделали для электронной почты.
Но сначала обратите внимание, что если вы находитесь в веб-мире, ни один браузер, к сожалению, не использует эти записи и, следовательно, вероятно, также не имеет клиентской библиотеки HTTP (S). В этом случае вам действительно нужно жестко закодировать номер порта в URL-адресе, иначе клиенты по умолчанию перейдут на 80 или 443. Или используйте какой-то механизм прокси / перенаправления на уровне HTTP.
Так что, если вы не находитесь в веб-парадигме, см. RFC 2782 для определения записи SRV или статью Википедии для более подробного введения в нее.
Короче говоря, они предоставляют способ отделить идентификацию службы (которая представляет собой имя службы и транспорт) до ее местоположения (которое в основном является именем хоста и портом), с добавлением некоторых других свойств, таких как возможность балансировки нагрузки / отработки отказа.
Допустим, у вас есть две службы, работающие на одном компьютере в разных портах. Но вы не хотите жестко кодировать все это, особенно на стороне клиента, потому что любая служба может быть перемещена в другой ящик или порт в любое время.
Итак, вы делаете это так:
- вы определяете имена сервисов, например
foo
и bar
.
- допустим, они работают по TCP (или TLS)
- один на порт
50080
другой на порт 50090
Затем вы можете опубликовать в своем DNS:
_foo._tcp.example.com. IN SRV 10 10 50080 somehost.example.com.
_bar._tcp.example.com. IN SRV 10 10 50090 somehost.example.com.
Тогда вам просто нужно убедиться, что клиенты этих двух служб используют там записи SRV, чтобы узнать правильное имя хоста и номер порта, которые нужно использовать для подключения, чтобы получить доступ к каждой услуге.
Все это будет незаметно для серверов, это просто логика для клиентов.