web-dev-qa-db-ja.com

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もエラーなしで再起動されます。

何か案が?

1
Jan Hana

ウェブサーバーはMIMEタイプtext/htmlを送信し、MIMEタイプtext/cssでフィルタリングします。

これは明らかに機能しません。 text/html(すべてのhtmlを含む)でフィルターするか、CSSのMIMEタイプを更新するか、CSSファイル拡張子にAddOutputFilterを使用します。

AddOutputFilter css
1
vidarlo

Content-Type: text/html;の応答は不必要にあなたを失望させたと思います。しかし、最初に設定を確認しましょう。

  1. mod_deflatemod_filterに依存しているため、ブースを有効にし、サーバーを再起動する必要があります。

  2. ファイル/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

ダウンロードしたファイルの内容を確認できます。元のファイルの別の圧縮バージョンである必要があります。


参照:

0
pa4080