Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
В прошлой статье я писал, как добавить на сервер мониторинг. Вот только доступ до него не очень удобный, через порт: домен.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 адреса, что и основной сайт. И в адресной строке будет название субдомена, а не порта сайта.