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