Я развернул приложение REST Spring Boot как WAR в AWS Elastic Beanstalk Tomcat 8 + Java 8. Впоследствии я понял, что мне нужно настроить следующие параметры (относится к Tomcat server.xml):Обновление конфигурации при запуске ElasticBeanstalk Экземпляр Tomcat
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/css,..."
потому application.properties
в Spring ботинке относится только к встроенным контейнерам Tomcat. Сейчас слишком поздно менять тип платформы экземпляра Elastic Beanstalk. Есть ли способ обновить конфигурацию из CLI Elastic Beanstalk, используя eb config
? Я смотрел на это AWS page, и похоже, что это возможно.
Обновлено 01/16/2017 Благодаря ответ от @ DAVE-клена я начал искать в соответствующих частях Elastic Beanstalk документации.
Во-первых, я обнаружил, что Apache является прокси-сервером по умолчанию. Я мог бы изменить его на nginx, но у меня не было никаких особых оснований идти по этому маршруту.
Во-вторых, я обнаружил, что добавление папки .ebextensions
на верхний уровень моего проекта Spring Boot. Я не хотел pollute моя база кода с конкретным конфигурационным файлом провайдера облака, но это, казалось, самый низкий висящий плод. Поэтому я пошел на это.
я добавил следующую иерархию:
MySpringBootProject
|
+- src
|
+- main
|
+- resources
|
+- ebextensions
|
+- httpd
| |
| +- conf.d
| |
| +- enable_mod_deflate.conf
|
+- myapp.config
|
+- tomcat-settings.config
СодержаниеTOMCAT-settings.config
option_settings:
aws:elasticbeanstalk:environment:proxy:
GzipCompression: 'true'
Содержаниеmyapp.config
container_commands:
05-restart-apache:
command: "sudo /etc/init.d/httpd restart"
Содержаниеenable_mod_deflate.conf
# mod_deflate configuration
<IfModule mod_deflate.c>
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xml+rss
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE image/png
AddOutputFilterByType DEFLATE image/gif
AddOutputFilterByType DEFLATE image/jpeg
# Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9
# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
<IfModule mod_headers.c>
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>
Добавьте следующие строки вpom.xml (настроить .ebextensions
папку верхнего уровня генерируемого файла WAR):
Я мог бы поклясться, что это сработало, потому что я видел Content-Encoding: gzip
ответный заголовок ... всего пару раз. Любая идея, что может произойти?
Могу ли я применить это изменение конфигурации в экземпляре, который уже настроен и работает в настоящее время. Я могу позволить себе перезапуск приложения. То, что я пытаюсь избежать, это добавить это к моей базе кода. –
Стандартный способ - использовать .ebextensions (потребуется обновление вашего пакета развертывания). –
Я действительно смотрел, и я не вижу способа сделать это с помощью 'eb config' или' eb setenv' - эти команды, похоже, не поддерживают изменение настроек в пространстве имен aws: elasticbeanstalk: environment. –