FedoraのNginxにBrotliモジュールを導入(どうにゅう)する

FedoraのNginxにBrotliモジュールを導入(どうにゅう)する方法(ほうほう)。
なんかバージョンアップのたびに必要(ひつよう)みたいなのでメモに残(のこ)します。

ngx_brotliをダウンロードする

初回(しょかい)のみ
Githubから google/ngx_brotli リポジトリをクローンします。
試(ため)してないですが、 wget 等(とう)でダウンロードしても多分(たぶん)大丈夫(だいじょうぶ)です。

$ git clone https://github.com/google/ngx_brotli.git

ngx_brotliのサブモジュール(brotli)を更新(こうしん)

$ cd ngx_brotli/deps/brotli
$ git checkout master
$ git pull

Nginxのソースをダウンロードする

Nginxのダウンロードページ から、 現在(げんざい)利用(りよう)しているNginxのバージョンのソースをダウンロードします。
ダウンロードしたら解凍(かいとう)まで行(おこな)っておきます。

$ nginx -v # <- Nginxのバージョン確認
nginx version: nginx/1.20.1
$ wget https://nginx.org/download/nginx-1.20.1.tar.gz
$ tar xzvf ./nginx-1.20.1.tar.gz

ngx_brotliモジュールのビルド

ほぼngx_brotliのREADMEどおりです。
※ 途中(とちゅう)、依存(いぞん)するライブラリが足(た)りないと言(い)われたら適宜(てきぎ) dnf でインストールしておきます。

$ ls -1F
nginx-1.20.1/
nginx-1.20.1.tar.gz
ngx_brotli/
$ cd ./nginx-1.20.1/
$ ./configure --with-compat --add-dynamic-module=../ngx_brotli
$ make modules # <- ビルドしたモジュールは objes ディレクトリ内に出力されます。
$ cd ..

ビルドしたモジュールの配置(はいち)

dnf で入(い)れたNginxモジュールは /usr/lib64/nginx/modules に入(はい)るようなのでngx_brotliモジュールもここに置(お)きます。
後述(こうじゅつ)する設定(せってい)ファイルでパスを指定(してい)するのでこの場所(ばしょ)が必須(ひっす)ではないです。

$ cp ./nginx-1.20.1/objs/ngx_http_brotli_filter_module.so /usr/lib64/nginx/modules/
$ cp ./nginx-1.20.1/objs/ngx_http_brotli_static_module.so /usr/lib64/nginx/modules/

設定(せってい)ファイルの作成(さくせい)

初回(しょかい)のみ
こちらも他(ほか)の設定(せってい)ファイルに合(あ)わせて /usr/share/nginx/modules に配置(はいち)します。

$ touch /usr/share/nginx/modules/mod-http-brotli.conf
$ emacs /usr/share/nginx/modules/mod-http-brotli.conf

/usr/share/nginx/modules/mod-http-brotli.conf

load_module "/usr/lib64/nginx/modules/ngx_http_brotli_filter_module.so";
load_module "/usr/lib64/nginx/modules/ngx_http_brotli_static_module.so";

一応(いちおう)この設定(せってい)ファイルを読(よ)み込(こ)むようになっているか /etc/nginx/nginx.conf を確認(かくにん)しておきます。
下記(かき)の記述(きじゅつ)があるかを確認(かくにん)し、なければ追記(ついき)しておきます。

/etc/nginx/nginx.conf

︙
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
︙

完了(かんりょう)

あとは nginx -t を実行(じっこう)して設定(せってい)ファイルに誤(あやま)りがないかを確認(かくにん)したり、正常(せいじょう)に起動(きどう)できるか確認(かくにん)したり、ブラウザからBrotli圧縮(圧縮)が有効(ゆうこう)になっているかを確認(かくにん)して完了(かんりょう)です。