У меня есть выделенный сервер и домен example.com. Я разработал три приложения и хочу к каждому приложению, запущенное на одном сервере на разных портах, дать свой поддомен: public, admin и по умолчанию
Выглядит это примерно так:
+----------+--------------------+------+-----------------+
| Поддомен | URL | Порт | Приложение |
+----------+--------------------+------+-----------------+
| admin | admin.example.com | 82 | SpringAppAdmin |
| public | public.example.com | 81 | SpringAppPublic |
| - | example.com | 80 | SpringAppMain |
+----------+--------------------+------+-----------------+
Как в Spring Boot прописывать поддомен?
Решил проблему установкой Nginx на сервер.
Ресурсы, которые помогли:
Развертывание приложения Spring Boot на NGINX
Мой сервер работает на Ubuntu 18.04
Устанавливаем Ngninx на сервер
в папке /etc/nginx/sites-available/ создаем файл с вашим сайтом example.com:
/etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
# Измените назввние сервера
server_name example.com;
#Корень приложения в моем проекте - это /
location /{
# измените порт на ваш
proxy_pass http://localhost:8080/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
}
server {
listen 80;
listen [::]:80;
# Измените назввние сервера
server_name admin.example.com;
#Корень приложения в моем проекте - это /
location /{
# измените порт на ваш
proxy_pass http://localhost:8081/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
}
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
default, чтобы заменить его нашими настройками nginx:rm /etc/nginx/sites-enabled/default
Отредактируйте конфиг tomcat'a server.xml, добавьте хосты:
<Host name="admin.example.com" appBase="webapps/SpringAppAdmin" autoDeploy="true">
<Alias>admin.example.com</Alias>
<Context path="" docBase="${catalina.base}/webapps/SpringAppAdmin"/>
</Host>
<Host name="public.example.com" appBase="webapps/SpringAppPublic" autoDeploy="true">
<Alias>public.example.com</Alias>
<Context path="" docBase="${catalina.base}/webapps/SpringAppPublic"/>
</Host>
<Host name="example.com" appBase="webapps/SpringAppMain" autoDeploy="true">
<Alias>example.com</Alias>
<Context path="" docBase="${catalina.base}/webapps/SpringAppMain"/>
</Host>
В данном случае хостам будет все равно на каких внутренних портах крутятся ваши приложения.
Единственное, не забудьте настроить DNS записи вашего домена.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости