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圧縮が有効になっているかを確認して完了です。