Свой сервер
Я арендовал сервер VPS для личных проектов. Сегодня это стоит копейки, месячная аренда сервера начинается где-то от 200 рублей. Стоимость одной поездки на такси.
На этот сервер загружаю всяческие эксперименты. Прототипы будущих продуктов, бэкэнды для ботов и так далее.
Своего рода песочница. Если какой-то из моих проектов вырастет в нечто большее и перестанет помещаться, я просто перенесу проект на отдельный сервер. Такого ещё не происходило, но я надеюсь что произойдёт 😉
Пока я делаю эти небольшие сервисы, мне нужно как-то публиковать их в интернет, чтобы к ним могли обращаться другие сервисы или же я сам мог открыть их в браузере.
У сервера VPS как и у любого сервера в интернете есть собственный IP-адрес. Например — 241.40.39.57
Каждое приложение может “публиковать” свой собственный порт. Зная этот порт, мы можем обратиться к приложению, указав IP и порт.
IP будет общий, так как всё находится на одном сервере, а порт будет различаться. У каждого приложения свой порт.
Например:
https://241.40.39.57:7000
https://241.40.39.57:5555
https://241.40.39.57:31005
Но такие ссылки тяжело различить между собой и почти невозможно запомнить.
Так себе решение.
Свой домен
У меня есть собственный домен, который я купил специально для блога — leonidchernenko.ru.
Так как я владелец домена, я могу через редактор DNS-записей добавить поддомены, и у каждого приложения будет “настоящий” адрес.
facebook-killer.leonidchernenko.ru
yii4.leonidchernenko.ru
developer-heaven.leonidchernenko.ru
NB: Для редактирования DNS-записей я использую сервис “Яндекс.Коннект”, но вы можете использовать любой, например от вашего хостера или регистратора домена. Также популярный выбор — CloudFlare.
Добавляем запись в DNS, указываем имя поддомена и IP сервера:
A facebook-killer 241.40.39.57 21600
И через некоторое время у нас появляется новый поддомен.
Добавляем на каждое приложение свой поддомен и радуемся удобным адресам.
Кеш DNS
Проблема, однако, в том, что новый поддомен не будет полностью доступен, пока все DNS серверы мира не обновят свои кеши. Это может занять несколько часов, а может и целый день.
Повлиять на скорость обновления DNS-серверов невозможно.
Это ужасно, сидишь и ждёшь пока всё обновится.
Wildcard
Поэтому я решил проблему так, сделал “Wildcard” запись A-типа в DNS для моего домена.
Имя поддомена заменяется звёздочкой: *
Звёздочка означает “любой поддомен”.
A * 241.40.39.57 21600
Теперь любой поддомен моего сайта, который явно не указан в DNS, будет по умолчанию ссылаться на мой сервер VPS. Удобно!
И это меня не ограничивает. Если я захочу, могу подключить новый поддомен на любой другой IP (другой сервер), добавив ещё одну A-запись в DNS.
Мне больше не нужно ждать целый день для того чтобы запустить приложение на поддомене, я могу делать это моментально.
Приложение сразу же будет доступно из любой точки мира.
Работа стала чуть проще 😌
Бонус
Забавный комикс про то как устроен DNS: https://howdns.works/