Как настроить поддомен в apache2 на ubuntu 20.04?

У меня есть сервер apache, работающий на порту 80, и я хочу иметь поддомен, указывающий на порт 3000 на том же сервере. Мой сервер на порту 3000 - это сервер ruby on rails, но в идеале я могу разместить свой основной сайт на apache2 на порту 80, а затем поддомен, например api.mycompany.com, который обрабатывает API-запросы именно на порту 3000. Как я могу это сделать?

0
задан 3 June 2021 в 17:39

2 ответа

создать две записи A, указывающие на один и тот же сервер

example.com -> 87.45.34.31 (замените IP-адресом вашего сервера)
api. example.com -> 87.45.34.31 (замените на свой IP)

Создайте VirtualHost для домена example.com на Apache для статических файлов внешнего интерфейса, указывающих на / var / www / html . создать еще один Virualhost для api.example.com с обратным прокси на порту localhost: 3000

некоторая ссылка: - https: // www .digitalocean.com / community / tutorials / how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension

0
ответ дан 28 July 2021 в 11:32

Один из способов - использовать Apache в качестве так называемого «обратного прокси». По сути, это говорит серверу Apache: «все, что входит на этот виртуальный хост, отправьте его на 1.2.3.4:3000 и доставьте ответ, который пришел оттуда».

Для Apache это можно сделать с помощью модуля mod_proxy , который предоставляет такие директивы, как ProxyPass и ProxyPassReverse . Модуль должен был быть установлен с вашей стандартной установкой Apache. Вы можете проверить, содержит ли вывод apache2ctl -M что-то вроде proxy_module (shared) '.

Затем вы настраиваете дополнительный виртуальный хост, который обрабатывает имя хоста api.mycompany.com . Внутри этого виртуального хоста вы настраиваете обратный прокси

ProxyPass "/"  "http://127.0.0.1:3000"
ProxyPassReverse "/"  "http://127.0.0.1:3000"

, предполагая, что ваше приложение Rails работает на http://127.0.0.1:3000 с точки зрения сервера.

Могут быть дополнительные соображения в зависимости от того, что именно нужно вашему приложению Rails (например, ProxyPreserveHost , чтобы назвать один пример). Но это основной принцип.

Некоторые дополнительные мысли:

  • Не забудьте проверить, есть ли запись DNS для api.mycompany.com и указывает ли эта запись на ваш сервер.
  • Убедитесь, что сервер, на котором запущено ваше приложение Rails, доступен только с localhost (что-то между 127.0.0.1 и 127.255.255.254 ). Больше нет необходимости иметь доступ к приложению с общедоступного IP-адреса, теперь это работа Apache.
0
ответ дан 28 July 2021 в 11:32

Другие вопросы по тегам:

Похожие вопросы: