Apacheの性能対策設定 (コンテンツ圧縮)を説明します。
mod_deflate
を使用してコンテンツを圧縮することで、クライアントにHTTPレスポンスを送信する際、データ転送量を削減できます。
前提条件
- 作業は、root権限を持つユーザで実施します。
- OSおよびApacheは、以下のバージョンで検証しています。
# cat /etc/redhat-release
CentOS Linux release 8.3.2011
# uname -r
4.18.0-240.el8.x86_64
# httpd -v
Server version: Apache/2.4.37 (centos)
Server built: Nov 4 2020 03:20:37
設定手順 (httpd.conf)
viなどのテキストエディタで、Apacheの設定ファイルを編集します。
# vi /etc/httpd/conf/httpd.conf
外部設定ファイルの読み込み
設定ファイルの保守性を高めるため、コンテンツ圧縮用の設定ファイルは、httpd.conf
から外出しします。
デフォルト設定では、httpd.conf
の中でIncludeOptional
ディレクティブを使用して/etc/httpd/conf.d/
ディレクトリの配下の全てのファイルを読み込むようになっているので、この設定状態の場合は変更する必要はありません。
IncludeOptional conf.d/*.conf
上記とは異なり、読み込む外部設定ファイルを個別に指定している場合は、httpd.conf
ファイル内に以下の行を追加します。
IncludeOptional conf.d/deflate.conf
設定手順 (deflate.conf)
viなどのテキストエディタで、コンテンツ圧縮用の設定ファイルを作成します。
# vi /etc/httpd/conf.d/deflate.conf
コンテンツの圧縮
AddOutputFilterByType
ディレクティブで圧縮対象とするコンテンツのMIMEタイプを指定します。
MIMEタイプの種類は以下で公開されています。必要に応じて圧縮対象を変更してください。まずはMIMEタイプがtext
系のものから試してみると良いでしょう。
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
なお、コンテンツの圧縮にはCPUのリソースを消費します。以下の場合はあまり効果が出ない、もしくは性能劣化してしまう可能性があるので、コンテンツの圧縮は行わない方が良いでしょう。
- 大容量コンテンツの送信
- 既に圧縮済みのコンテンツ(zipファイルやjpegファイル)の送信
- CPUのリソースが逼迫している状態での圧縮処理
設定内容の確認
以下のコマンドを実行し、設定ファイルの文法に問題がないか確認します。
文法が正しければ、Syntax OK
が表示されます。
# httpd -t
Syntax OK
設定の反映
以下のコマンドを実行し、httpdサービスを再起動して設定を反映します。
# systemctl restart httpd.service
以下のコマンドを実行し、httpdサービスが起動状態であることを確認します。
Active:の列にactive (running)が表示されていれば、サービスは起動中です。
# systemctl status --no-pager httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2019-11-26 13:35:13 JST; 20s ago
(略)
以上で、Apacheの性能対策設定 (コンテンツ圧縮)は完了です。