0

私はAWS Elastic Beanstalk Tomcat 8 + Java 8インスタンスにWARとしてSpringブートRESTアプリケーションをデプロイしました。春ブーツでapplication.propertiesのみ組み込みのTomcatコンテナに適用されるためElasticBeanstalk Tomcatインスタンスの実行時に設定を更新します

compression="on" 
compressionMinSize="2048" 
compressableMimeType="text/html,text/css,..." 

:その後、私は次のように設定し(Tomcat server.xmlに適用されます)を設定する必要があることに気づきました。現在、Elastic Beanstalkインスタンスのプラットフォームタイプを変更するのは時期尚早です。 eb configを使用して、Elastic Beanstalk CLIから設定を更新する方法はありますか?私はこれを見ていたAWS page、それは可能性がありますように見えます。デイブ・メープル@からの回答に

更新2017年1月16日 おかげで私は、Elastic Beanstalkでのドキュメントの関連部分に探し始めました。

まず、Apacheがデフォルトのプロキシサーバーであることがわかりました。私はそれをnginxに変更することができたかもしれませんが、私はそのルートに行くための特別な正当性はありませんでした。

次に、.ebextensionsフォルダをSpringブートプロジェクトの最上位に追加しています。私はを汚染したくない私のコードベースはクラウドプロバイダー固有の構成ファイルを持っていますが、最も低い垂木であるようです。だから私はそれに行きました。

私は、次のような階層を追加しました:のtomcat-settings.configの

MySpringBootProject 
| 
+- src 
    | 
    +- main 
     | 
     +- resources 
      | 
      +- ebextensions 
       | 
       +- httpd 
       | | 
       | +- conf.d 
       |  | 
       |  +- enable_mod_deflate.conf 
       | 
       +- myapp.config 
       | 
       +- tomcat-settings.config 

内容myapp.configの

option_settings: 
    aws:elasticbeanstalk:environment:proxy: 
    GzipCompression: 'true' 

内容

enable_mod_deflate.confの10の

内容

# 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(生成されたWARファイルのトップレベルで.ebextensionsフォルダを設定するため)に次の行を追加します。

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
     <webResources> 
      <resource> 
       <directory>src/main/resources/ebextensions</directory> 
       <targetPath>.ebextensions</targetPath> 
       <filtering>true</filtering> 
      </resource> 
     </webResources> 
    </configuration> 
</plugin> 

私はを見たので、私は、これが働いている可能性が宣誓レスポンスヘッダー...数回だけ。何が起きているのか?

答えて

1

圧縮を実装する最良の方法は、tomcatの前で実行されるnginxプロキシです。この操作では、nginxがより効率的です。これを行うには、あなたの配布アーカイブのルートに.ebextensionsディレクトリを作成し、次のようなnginx-proxy.configファイルを追加することができます

.ebextensions/nginxのプロキシ。コンフィグ

option_settings: 
    aws:elasticbeanstalk:environment:proxy: 
    GzipCompression: 'true' 
    ProxyServer: nginx 

次にあなたがElastic Beanstalkで上のアプリの新バージョンを構築し、展開することができます。

新しいバージョンを展開する際にダウンタイムを避ける必要がある場合は、rolling deployment(新しいバージョンを展開する前にLBからインスタンスを削除)またはblue/green deployment (a new environment + cname swap)を使用することができます。

=== === EDIT

あなたはgzip圧縮されますnginxのContent-Type値をカスタマイズする必要があるかもしれません。すべてをgzip圧縮するために

、.ebextensionsで設定ファイルを作成します。

.ebextensions/gzip.config

files: 
    /etc/nginx/conf.d/gzip.conf: 
    content: | 
     gzip_types *; 

たり、圧縮したいタイプを定義し、より選択的にする:

.ebextensions/gzip.config

files: 
    /etc/nginx/conf.d/gzip.conf: 
    content: | 
     gzip_types text/plain text/css application/json application/x-javascript text/xml; 
+0

この設定変更は、すでに設定され、現在実行中のインスタンスで適用できますか。私はアプリケーションを再起動する余裕があります。私が避けようとしているのは、これを自分のコードベースに追加することです。 –

+0

標準的な方法は.ebextensionsを使用することです(デプロイメントパッケージを更新する必要があります)。 –

+1

私は見ましたが、 'eb config'や' eb setenv'でこれを行う方法は見当たりません。これらのコマンドは 'aws:elasticbeanstalk:environment'名前空間内の設定の変更をサポートしていないようです。 –

関連する問題