Запутался в конфигурации.
Есть хост, на котором 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?