Настройка поддоменов на Spring Boot

220
19 марта 2022, 14:00

У меня есть выделенный сервер и домен example.com. Я разработал три приложения и хочу к каждому приложению, запущенное на одном сервере на разных портах, дать свой поддомен: public, admin и по умолчанию

Выглядит это примерно так:

+----------+--------------------+------+-----------------+
| Поддомен |        URL         | Порт |   Приложение    |
+----------+--------------------+------+-----------------+
| admin    | admin.example.com  |   82 | SpringAppAdmin  |
| public   | public.example.com |   81 | SpringAppPublic |
| -        | example.com        |   80 | SpringAppMain   |
+----------+--------------------+------+-----------------+

Как в Spring Boot прописывать поддомен?

Answer 1

Решил проблему установкой Nginx на сервер.

Ресурсы, которые помогли:
Развертывание приложения Spring Boot на NGINX

Мой сервер работает на Ubuntu 18.04

  1. Устанавливаем Ngninx на сервер

  2. в папке /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;
        }
}
  1. Прописываем "soft link":
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  1. Удаляем "soft link" на файлdefault, чтобы заменить его нашими настройками nginx:
rm /etc/nginx/sites-enabled/default
Answer 2

Отредактируйте конфиг 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 записи вашего домена.

READ ALSO
Как получить количество строк в sqlite в java android studio? [дубликат]

Как получить количество строк в sqlite в java android studio? [дубликат]

Есть база данных sqlite, как получить количество содержащихся в ней строк?

90
Объекты разной ширины

Объекты разной ширины

Такой вопрос, задача сделать некое подобие таблицы с данными, но количество столбцов должно зависеть от ширины содержимого, вот пример:

103