質問: apache 2.4.37 mod_deflateが機能しない ppa:ondrej/apache2経由でapache 2.4.37をインストールしましたが、mod_deflate(gzip圧縮)を機能させることができません。 ubuntu 18.04サーバーを使用しています。apacheではmod_deflateが有効になっています。sudo apachectl -t -d dump_modules | grep deflate deflate_module (shared) コードを.htaccessに配置しました:addoutputfilterbytype deflate text/css rewriteengine on rewritebase / rewritecond %{https} !on rewritecond %{http:x-forwarded-proto} !=https rewriterule ^.*$ https://%{http_host}%{request_uri} [l,qsa,ne] .htaccessは、apache configによって有効になります(リダイレクトが機能します)。試してみると:curl -i -h 'accept-encoding: gzip,deflate' http://myserver/pokus.css返されます:http/1.1 302 found date: thu, 24 jan 2019 12:20:00 gmt server: apache/2.4.37 (ubuntu) location: https://myserver/pokus.css content-type: text/html; charset=iso-8859-1 そのため、ファイルは圧縮されずに返されます。また、virtualhostに直接deflateコマンドを追加しようとしましたが、成功しませんでした。/var/log/apache2/error.logにエラーメッセージはありません。 apacheもエラーなしで再起動されます。何か案が?
回答: content-type: text/html;の応答は不必要にあなたを失望させたと思います。しかし、最初に設定を確認しましょう。 mod_deflateはmod_filterに依存しているため、ブースを有効にし、サーバーを再起動する必要があります。 ファイル/etc/apache2/mods-enabled/deflate.confを見ると、上記の要件が満たされている場合、mod_deflateがいくつかの基本設定で有効になっているので、テストを実行するために他に何もする必要はありません。 実際には、以下の行を含む応答を探しています。vary: accept-encoding content-encoding: gzip content-type: text/css 問題は、リダイレクトhttp 301/http 302を含む応答ヘッダーがある場合です(この場合はそうです)、受信した情報は完全ではありません。したがって、http 200でヘッダーを返すcurl urlに試すか、別のメソッドを適用してテストを実行します。サーバー側に次の24kの大きなファイルがあると仮定します。$ ls -l /var/www/html/test.css -rw-r--r-- 1 root root 24k jan 24 22:10 /var/www/html/test.css クライアント側では、次のようにwgetを使用して、gzip圧縮が機能するかどうかをテストできます。wget --header="accept-encoding: gzip" http://example.com/test.css すべてうまくいった場合、ダウンロードされたファイルtest.cssは約3k大きくなるはずです。$ wget --header="accept-encoding: gzip" gzip" http://example.com/test.css ... http request sent, awaiting response... 200 ok length: 3045 (3.0k) [text/css] saving to: ‘test.css’ test.css 100%[===============================>] 2.97k --.-kb/s in 0s ダウンロードしたファイルの内容を確認できます。元のファイルの別の圧縮バージョンである必要があります。参照: buntuでmod_deflateをインストールして構成する方法-digitaloceanで