В прошлой статье я писал, как добавить на сервер мониторинг. Вот только доступ до него не очень удобный, через порт: домен.com:8080/monitorix
Решил переделать, чтобы можно было достучаться по адресу monitorix.домен.com
И тут столкнулся с проблемой:
если я хочу делать субдомен только через А-запись DNS - то мне нужен будет отдельный ip адрес, а аренда отдельного ip стоит лишних денег
если я делаю через redirect - то в названии не будет monitorix.домен.com - будет просто при вводе адреса субдомен перенаправлять в домен.com:8080/monitorix - а это не то, что мне нужно
Как же быть? Самый простой рабочий вариант, который я нашёл - сделать распределение по субдоменам на уровне веб-сервера, на котором работает мой сайт.
Как это делается (считаем, что apache web server уже установлен):
Добавление A-записи сервера
Необходимо будет добавить А-запись.
А-запись должна вести на ваш основной сайт - на тот ip адрес, по которому работает apache web server:
Активация модулей apache web server
Для активации модулей нужно запустить последовательно следующий код,
2enmod proxy --у меня сработало без этой строки
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests
После чего необходимо перезапустить службу,
systemctl restart apache2
Добавление конфига для субдомена
Нужно перейти в папку etc/apache2/sites-available/ после чего создать в ней файл с конфигом вашего субдомена:
Файл субдомен.домен.com.conf
<VirtualHost *:80>
ServerAdmin admin@домен.com
ServerName субдомен.домен.com
ServerAlias субдомен.доменcom
ProxyRequests Off
#ProxyPass / http://localhost:8080/
<Location />
ProxyPreserveHost On
ProxyPass http://домен.com:8080/monitorix/
ProxyPassReverse http://домен.com:8080/monitorix/
</Location>
# Uncomment the line below if your site uses SSL.
#SSLProxyEngine On
</VirtualHost>
После чего добавить этот конфиг в apache web server:
a2ensite субдомен.домен.com.conf
Ещё раз перезапускаем web сервер:
systemctl restart apache2
После чего вы можете перейти на ваш субдомен и наслаждаться тем, что он открылся с другого порта того же ip адреса, что и основной сайт. И в адресной строке будет название субдомена, а не порта сайта.
ky0
В следующей серии — «настраиваем nginx для отдачи статики и HTTPS»?
DigitalBerd Автор
Ну хер знает — когда искал по этой тематике статьи — на хабре не было нифига, все источники, использованные для статьи — на английском языке.
Stesh
А можно уточнить, каким десятилетием датированы эти источники?
DigitalBerd Автор
а можно уточнить, где вы видели рускоязычный аналог моей статьи?
Stesh
Аналог чего конкретно? Виртуальные хосты на одном ip существуют еще со времен выхода HTTP/1.1, благодаря появлению обязательного заголовка host. Реализация в апаче — гуглить по слову NameVirtualHost (я бы начал с этого).
Второе — апач не выставляют голой жопой в интернет уже много много лет по ряду причин, тут гуглить nginx + apache. Написано-переписано по этому поводу очень много, на хабре в том числе. А если у нас появляется nginx, то и проксирование вешаем на него — получается просто и элегантно.
Третье — можете пояснить назначение proxy_balancer (ну и lbmethod_byrequests прицепом)?
Четвертое — 2enmod не во всяком дистрибутиве есть.
PS: для того, чтобы поделиться знаниями и опытом с другими, хорошим тоном является изучение того, как оно работает и почему.