Перейти к основному содержимому

Как настроить Spring Boot Tomcat

· 5 мин. чтения

1. Обзор

Веб-приложения Spring Boot по умолчанию включают предварительно настроенный встроенный веб-сервер. Однако в некоторых ситуациях мы хотели бы изменить конфигурацию по умолчанию, чтобы она соответствовала индивидуальным требованиям.

В этом руководстве мы рассмотрим несколько распространенных вариантов настройки встроенного сервера Tomcat с помощью файла application.properties .

2. Общие конфигурации встроенного Tomcat

2.1. Адрес сервера и порт

Наиболее распространенная конфигурация , которую мы можем изменить, — это номер порта :

server.port=80

Если мы не указываем параметр server.port , по умолчанию он устанавливается на 8080 .

В некоторых случаях мы можем захотеть установить сетевой адрес, к которому должен быть привязан сервер. Другими словами, мы определяем IP-адрес, по которому наш сервер будет слушать :

server.address=my_custom_ip

По умолчанию установлено значение 0.0.0.0, что разрешает подключение через все адреса IPv4. Установка другого значения, например, localhost — 127.0.0.1 — сделает сервер более избирательным.

2.2. Обработка ошибок

По умолчанию Spring Boot предоставляет стандартную веб-страницу ошибок . Эта страница называется Whitelabel . Он включен по умолчанию, но если мы не хотим отображать информацию об ошибках, мы можем отключить его:

server.error.whitelabel.enabled=false

Путь по умолчанию к Whitelabel/error . Мы можем настроить его, установив параметр server.error.path :

server.error.path=/user-error

Мы также можем установить свойства, которые будут определять, какая информация об ошибке будет представлена. Например, мы можем включить сообщение об ошибке и трассировку стека:

server.error.include-exception=true
server.error.include-stacktrace=always

В наших руководствах « Обработка сообщений об исключениях для REST» и « Настройка страницы ошибок Whitelabel» рассказывается больше об обработке ошибок в Spring Boot.

2.3. Соединения с сервером

При работе в контейнере с низким ресурсом мы могли бы уменьшить загрузку ЦП и памяти. Один из способов сделать это — ограничить количество одновременных запросов, которые может обрабатывать наше приложение. И наоборот, мы можем увеличить это значение, чтобы использовать больше доступных ресурсов для повышения производительности.

В Spring Boot мы можем определить максимальное количество рабочих потоков Tomcat:

server.tomcat.threads.max=200

При настройке веб-сервера также может быть полезно установить время ожидания подключения к серверу . Это максимальное количество времени, которое сервер будет ждать, пока клиент сделает свой запрос после подключения, прежде чем соединение будет закрыто:

server.connection-timeout=5s

Мы также можем определить максимальный размер заголовка запроса:

server.max-http-header-size=8KB

Максимальный размер тела запроса:

server.tomcat.max-swallow-size=2MB

Или максимальный размер всего почтового запроса:

server.tomcat.max-http-post-size=2MB

2.4. SSL

Чтобы включить поддержку SSL в нашем приложении Spring Boot, нам нужно установить для свойства server.ssl.enabled значение true и определить протокол SSL:

server.ssl.enabled=true
server.ssl.protocol=TLS

Мы также должны настроить пароль, тип и путь к хранилищу ключей, содержащему сертификат:

server.ssl.key-store-password=my_password
server.ssl.key-store-type=keystore_type
server.ssl.key-store=keystore-path

И мы также должны определить псевдоним, который идентифицирует наш ключ в хранилище ключей:

server.ssl.key-alias=tomcat

Для получения дополнительной информации о настройке SSL посетите наш HTTPS с использованием самозаверяющего сертификата в статье Spring Boot.

2.5. Журналы доступа к серверу Tomcat

Журналы доступа Tomcat полезны при измерении количества посещений страниц, активности сеансов пользователей и т. д.

Чтобы включить журналы доступа, просто установите:

server.tomcat.accesslog.enabled=true

Мы также должны настроить другие параметры, такие как имя каталога, префикс, суффикс и формат даты, добавляемые к файлам журнала:

server.tomcat.accesslog.directory=logs
server.tomcat.accesslog.file-date-format=yyyy-MM-dd
server.tomcat.accesslog.prefix=access_log
server.tomcat.accesslog.suffix=.log

3. Встроенная версия Tomcat

Мы не можем изменить используемую версию Tomcat, настроив наш файл application.properties . Это немного сложнее и в основном зависит от того, используем ли мы spring-boot-starter-parent или нет.

Однако, прежде чем мы продолжим, мы должны знать, что каждый выпуск Spring Boot разработан и протестирован для конкретной версии Tomcat. Если мы изменим его, мы можем столкнуться с неожиданными проблемами совместимости .

3.1. Использование spring-boot-starter-parent

Если мы используем Maven и настраиваем наш проект для наследования от spring-boot-starter-parent , мы можем переопределить отдельные зависимости, перезаписав определенное свойство в нашем pom.xml .

Имея это в виду, чтобы обновить версию Tomcat, мы должны использовать свойство tomcat.version :

<properties>
<tomcat.version>9.0.44</tomcat.version>
</properties>

3.2. Использование весенних загрузочных зависимостей

Бывают ситуации, когда мы не хотим или не можем использовать spring-boot-starter-parent . Например, если мы используем собственный родитель в нашем проекте Spring Boot . В таких случаях есть большая вероятность, что мы используем spring-boot-dependency , чтобы по-прежнему получать выгоду от управления зависимостями.

Однако эта установка не позволяет нам переопределять отдельные зависимости с помощью свойств Maven, как показано в предыдущем разделе.

Чтобы достичь той же цели и по-прежнему использовать другую версию Tomcat, нам нужно добавить запись в раздел dependencyManagement нашего файла pom . Важно помнить, что мы должны разместить его перед spring - boot-dependencies :

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>9.0.44</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.4.5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

4. Вывод

В этом руководстве мы изучили несколько распространенных конфигураций встроенного сервера Tomcat . Чтобы просмотреть дополнительные возможные конфигурации, посетите официальную страницу документации свойств приложения Spring Boot .

Как всегда, исходный код этих примеров доступен на GitHub .