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系のものから試してみると良いでしょう。

MIME タイプ (IANA メディアタイプ)

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の性能対策設定 (コンテンツ圧縮)は完了です。