@vitalysokolov

Как настроить проксирующий вебсервер и привязать субдомены для сервисов, работающих в виртуальной машине?

Запутался в конфигурации.
Есть хост, на котором bind, apache и виртуальные машины KVM.
В виртуальной машине работает несколько сервисов как на портах 80/443, так и на нестандартных.
Есть основной домен (domain.ru), и сервисы, к которым тоже нужно добавить субдомены (service1.domain.ru, service2.domain.ru).

Как я сделал сейчас:
На хосте в каждой зоне bind добавил нужное кол-во А-записей вроде
domain.ru.  IN      A       XX.XX.XX.XX
service1 IN      A       XX.XX.XX.XX
service2 IN      A       XX.XX.XX.XX


В конфиге виртуального хоста Apache:
<VirtualHost *:80>
    ServerName domain.ru
    ServerAlias service1.domain.ru service2.domain.ru
    ServerAdmin mail@domain.ru
    DocumentRoot /var/www/html/

    ProxyRequests Off
    ProxyPass / http://192.168.202.2
    ProxyPassReverse / http://192.168.202.2

    <Location />
        Require all granted
    </Location>

    ErrorLog ${APACHE_LOG_DIR}/domain.ru_error.log
    CustomLog ${APACHE_LOG_DIR}/domain.ru_access.log combined
    LogLevel error
</VirtualHost>


Правильно ли я указываю в ServerAlias все используемые субдомены или лучше как-то по-другому?
192.168.202.2 — это ip виртуальной машины.
Там в свою очередь nginx принимает запросы и проксирует по сервисам.
domain.ru работает корректно. Конфиг такой:
server {
        listen 80;
        listen [::]:80;

        server_name domain.ru www.domain.ru 192.168.202.2;
        root /srv/www/domain.ru/html;

        access_log /srv/www/domain.ru/logs/domain.ru.access;
        error_log /srv/www/domain.ru/logs/domain.ru.error error;

        index index.html index.htm;

        location / {
                try_files $uri $uri/ =404;
        }
}

А service1 не работает, браузер вместо /srv/service1/build показывает содержимое /srv/www/domain.ru/html
server {
   listen 80;
   listen [::]:80;
   root /srv/service1/build;
   server_name service1.domain.ru;
   index index.html index.htm;
   location / {
   }
}

Порт 80 мне вообще не нужен. Если добавить SSL-сертификат, то его лучше настроить на хосте с apache, или на виртульной машине с nginx?
И если, например, у меня есть API, работающая на порту 50000, например, то как к ней привязать субдомен, чтобы API было доступно по service3.domain.ru:50000?
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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