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