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もエラーなしで再起動されます。
何か案が?
ウェブサーバーはMIMEタイプtext/html
を送信し、MIMEタイプtext/css
でフィルタリングします。
これは明らかに機能しません。 text/html
(すべてのhtmlを含む)でフィルターするか、CSSのMIMEタイプを更新するか、CSSファイル拡張子にAddOutputFilter
を使用します。
AddOutputFilter css
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
ダウンロードしたファイルの内容を確認できます。元のファイルの別の圧縮バージョンである必要があります。
参照: