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 .