PankovAlxndr
@PankovAlxndr
Fullstack web developer

Как организовать доступ по доменным именам к разным проектам к vps?

Здравствуйте
у меня старый макбук, собирать на нем фронт (webpack\nuxt), работать с легаси (bitrix), с большими и не оптимизированными БД - уже сложно, если запехнуть в докер - невозможно (низкая скорость), поэтому арендовал vps contabo, сейчас перекинул кодовую базу туда, каждый проект в своем докере (lemp stack), nginx(который в докере) каждого проекта пробрасывает свой порт наружу.
те я работаю с проектом №1 - там порт 1000 (жестко прописан в env, я это знаю)
я на маке пишу код, на vps по ftp\sftp\rsync загружается мой код

докер кстати этот код берет как volume, бывает приходится ждать пару секунд, но это небо и земля если сравнивать с докером на мак

так вот, код я написал, перехожу в браузер 194.161.162.63:1000 и смотрю все ли работает

а если я работаю с проектом №2 - там порт 1010 (жестко прописан в env, я это знаю)
все аналогично, но, перехожу в браузер 194.161.162.63:1010 и смотрю все ли работает

таких проектов одновременно штук 5 - у всех свой порт, бывают старые проекты и новые и тп

мне не нравится писать ип адрес каждый раз, гораздо удобнее запомнить доменное имя (поддомен), да и заказчикам и коллегам показывать приятнее, когда кидаешь ссылку, а не ип адрес

отсюда вопрос (тк я не девопс вообще и не понимаю много чего), как мне сделать чтобы у меня для каждого проекта был свой домен?

как я вижу это:
1) ищу самый дешевый домен
2) делегирую на свой хостинг
3) для каждого проекта создаю дополнительный уровень porjet1.domain.ru, porjet2.domain.ru ... porjetN.domain.ru (делегирую на vps(хотя вроде оно(dns) само уже туда смотреть будет)
4) уже не в докере, а нативно на vps ставою nginx
5) этот нативный nginx слушает 80\433 порт и согласно доменному имени перекидывает (это называется проксирует, да?) запрос на определенный порт (который фиксированный и я его знаю для каждого проекта)
porjet1.domain.ru -> 194.161.162.63:1000
porjet2.domain.ru -> 194.161.162.63:1010
....

Такое будет работать?
Так делают?
Это изврат и можно проще?

ps
докер только для разработки, на проде его нет, код с гита туда попадает, реджестри докера не используется
для меня докер:
- удобное решение для разного стека (php7.2-8.1 mysql\postgre)
- у проектов базы по 3-4ГБ, + их версии (прод, фича1, фича2), а на ноуте 100гб места изначально
- использую мощности впс, а не ноута который еле вывозит "большие" проекты, греется и руки потные ))
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
@mureevms
Направление мысли верное, но детали не совсем.

1. По домену все так.
2. Домен надо делегировать на DNS хостинг. Поэтому не покупайте домен в nicru, они оборзели уже давно и хотят за это деньги. Купите на 2домен.ру или где еще, где бесплатный DNS хостинг.
3. Да, создаете в админке DNS доменные имена третьего уровня (A записи) и в качестве дестинейшн указываете IP адрес VPC.
4,5. Можно и в докере, даже удобнее будет. Тем самым будете указывать proxy_pass по имени контейнера приложения, иначе столкнетесь с тем, что при пересоздании контейнеров придется менять адреса в конфиге nginx, т.е. porject1.domain.ru -> porject1_container_name:1000

Совершенно не изврат, это верный подход.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Viji
@Viji
Associate DevOps Engineer
Раньше они давали совсем бесплатные домены

www.dot.tk/en/index.html?lang=en

Кроме того можете у себя в файле hosts прописать dns записи к несуществующим доменам, в самом Windows
c:\Windows\System32\Drivers\etc\hosts

194.161.162.63:1000                                         myproject1.ru


и они будут открываться и в браузере и вообще с вашей машины
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы