У меня есть сервер apache, работающий на порту 80, и я хочу иметь поддомен, указывающий на порт 3000 на том же сервере. Мой сервер на порту 3000 - это сервер ruby on rails, но в идеале я могу разместить свой основной сайт на apache2 на порту 80, а затем поддомен, например api.mycompany.com, который обрабатывает API-запросы именно на порту 3000. Как я могу это сделать?
создать две записи 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
Один из способов - использовать 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 , чтобы назвать один пример). Но это основной принцип.
Некоторые дополнительные мысли:
api.mycompany.com
и указывает ли эта запись на ваш сервер. localhost
(что-то между 127.0.0.1
и 127.255.255.254
). Больше нет необходимости иметь доступ к приложению с общедоступного IP-адреса, теперь это работа Apache.