web-dev-qa-db-ja.com

Originがgzip圧縮されたファイルを提供していないためS3Webサイトを使用するCloudFront

AWSはCloudFrontを介したgzipファイルをサポートするようになりました

圧縮ファイルの提供 のすべての手順に従いましたが、gzippingが機能していません。

CloudFrontがオリジンとして使用しているウェブサイトとしてS3バケットを設定しています。

  • Compress Objects Automaticallyが有効になっています
  • application/javascripttext/cssなどの正しいコンテンツタイプのファイルを提供しています
  • ファイルは1,000〜10,000,000バイト以内です
  • S3 Webサイトは、私が知る限り、Content-Lengthでファイルを提供します
  • 何もキャッシュされていないことを確認するために、S3バケット全体を無効にし、新しいバージョンのファイルをS3にアップロードしました。
  • さらに、私が使用しているWebブラウザーであるChromeは、gzip圧縮されたファイルを受け入れます。

これらすべてにもかかわらず、私はgzipを機能させることができません。 SSLを含む他のすべてが完全に機能するようになりました。次のサイトにアクセスできます: https://formulagrid.com/

chromeコンソールを開くと、S3から提供されているファイルがgzip圧縮されていないことがわかります。Googleフォントなどのgzip圧縮されたファイルは私が取得しているものだけです。他のCDNから。

23
m0meni

今日も同じエラーが発生し、S3バケットにCORSルールを追加して解決しました。このルールにより、Content-LengthヘッダーがCloudfrontに送信され、コンテンツをgzip圧縮できるようになります。

S3>バケット>パーミッション> CORS設定

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
        <AllowedHeader>Content-Length</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

クレジットはRobertEllisonに送られます: http://ithoughthecamewithyou.com/post/enable-gzip-compression-for-Amazon-s3-hosted-website-in-cloudfront

私の知る限り、これは文書化されていない要件のようです。

38
Rodrigo