すべてのプロダクト
Search
ドキュメントセンター

:オリジンサーバーにリダイレクトされたリクエストに対してGzip圧縮が有効にならないのはなぜですか?

最終更新日:Nov 10, 2025

問題の説明

Alibaba Cloud CDN 高速化ドメイン名のオリジンサーバーはNGINXサーバーであり、Gzip圧縮機能が有効になっています。 クライアントがオリジンサーバーからリソースを要求すると、Gzip圧縮機能が有効になります。 ただし、クライアント要求がポイントオブプレゼンス (POP) から配信元サーバーにリダイレクトされると、Gzip圧縮機能は有効になりません。 次のセクションでは、詳細について説明します。

Gzipの圧縮と解凍が期待どおりに機能する場合、NGINXサーバーは圧縮されたコンテンツを返し、トラフィックのオーバーヘッドを減らし、応答を高速化します。 ただし、Alibaba Cloud CDN を使用すると、リクエストはPOPから配信元サーバーにリダイレクトされ、クライアントは非圧縮コンテンツを受信します。 この場合、オリジンサーバーのGzip圧縮機能は有効になりません。 次のセクションでは、詳細を説明します。

  • Alibaba Cloud CDN が使用されておらず、リクエストヘッダーにAccept-Encoding: gzip, deflateヘッダーが含まれている場合、対応するレスポンスヘッダーはContent-Encoding: gzipです。 この場合、コンテンツは圧縮される。

  • Alibaba Cloud CDN が使用されている場合 とリクエストヘッダーにAccept-Encoding: gzip, deflateヘッダーが含まれ、対応するレスポンスヘッダーはContent-Lengthで、Content-Encoding: gzipヘッダーは返されません。

原因

NGINXオリジンサーバーのGzip関連の構成が無効であり、オリジンサーバーにリダイレクトされるリクエストに対してGzip圧縮機能が有効になっていません。 次のセクションでは、詳細を します。

リクエストがPOPから配信元サーバーにリダイレクトされた場合、リクエストがプロキシからのものであることを指定するためにViaヘッダーがリクエストに追加されます。 この例では、Alibaba Cloud CDN がプロキシです。 ただし、NGINXのngx_http_gzip_moduleモジュールには、プロキシされたリクエストに対してgzip圧縮を有効にするかどうかを制御するGzip_プロキシ設定項目が含まれています。 設定項目を有効にするための前提条件の1つは、リクエストヘッダーにViaヘッダーが含まれていることです。 したがって、gzip_プロキシ設定項目は、オリジンリクエストに対してGzip圧縮を有効にするかどうかを決定します。

解決策

[問題の説明] で説明したのと同じ問題が発生した場合は、次の手順を実行してNGINXの設定ファイルを更新します。 問題を特定できない場合は、「参照」をご参照ください。

  1. NGINXの設定ファイルでGzip関連のブロックを見つけます。 Gzipは、異なる設定ファイルに対応するhttp、サーバー、およびロケーションブロックで設定できます。 この例では、Gzipはnginx.confファイルのhttpブロックで設定されています。

  2. gzip_プロキシ設定項目が存在するかどうかを確認します。 存在する場合は、次の設定に基づいて設定項目を変更します。 存在しない場合は、次の設定を追加します。 gzip_proxied設定項目の詳細については、「NGINXドキュメント」をご参照ください。

    説明

    gzip_プロキシ設定項目が存在しない場合、次の設定の値はデフォルトでオフになります。

    gzip_proxied  any
    説明

    anyは、すべてのプロキシリクエストに対してGzip圧縮が有効であることを示します。

  3. 上記の設定を保存した後、次のコマンドを順番に実行してNGINXの設定を確認し、NGINXの設定ファイルをリロードします。

    nginx -t
    nginx -s reload
  4. Alibaba Cloud CDN を有効にします。 リクエストがNGINXオリジンサーバーにリダイレクトされた後、レスポンスにContent-Encoding: gzipヘッダーが含まれているかどうかを確認します。 そうである場合、コンテンツは圧縮される。

参考資料

次の手順を実行して、[課題] セクションで説明しているのと同じ問題が発生したかどうかを確認できます。

  1. curlコマンドをサポートするコマンドラインインターフェイス (CLI) を開きます。

  2. 次のcurlコマンドを実行して、Accept-Encoding: gzip, deflateヘッダーを含むオリジンサーバーにアクセスします。

    curl -voa 'http://[$Domain]/[$Resource]' -x [$Original_Server_IP]:80 -H 'Accept-Encoding: gzip, deflate'
    説明
    • [$ドメイン]: ドメイン名。

    • [$Resource]: イメージやAPI操作など、要求されたリソースのURL。

    • [$Original_Server_IP]: NGINXオリジンサーバーのパブリックIPアドレス。

    次のような応答が返されます。 Content-Encoding: gzipヘッダーが返されたかどうかを確認します。

  3. 次のコマンドを参照し、ステップ2のコマンドに基づいてViaヘッダーを追加して、プロキシからの要求をシミュレートします。

    curl -voa 'http://[$Domain]/[$Resource]' -x [$Original_Server_IP]:80 -H 'Accept-Encoding: gzip、deflate' -H 'Via:xxx'
    説明

    Viaヘッダーには任意の値を使用できますが、テスト結果には影響しません。 この例では、xxxが使用されます。

    次のような応答が返されます。 Content-Encoding: gzipヘッダーの代わりにContent-Lengthヘッダーが返されるかどうかを確認します。