nginx に brotli モジュールを追加する

概要

Sora 向けの wasm バイナリはとても大きいため brotli で圧縮してクライアントへ配布することをおすすめしています。

ここでは wasm バイナリを Nginx 経由で brotli で圧縮して配布する方法について説明します。

インストール

現在インストールされている nginx に brotli モジュールを追加する 現在のバージョンの nginx と ngx_brotli.git を使用してモジュールを作成する

# git clone https://github.com/google/ngx_brotli.git
# cd ngx_brotli && git submodule update --init && cd ~
# curl -LO http://nginx.org/download/nginx-`nginx -v 2>&1 | awk '{ print $ 3 }' | tr -d 'nginx/'`.tar.gz
# tar xf nginx-`nginx -v 2>&1 | awk '{ print $ 3 }' | tr -d 'nginx/'`.tar.gz
# cd  nginx-`nginx -v 2>&1 | awk '{ print $ 3 }' | tr -d 'nginx/'`
# apt install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev
# ./configure --with-compat --add-dynamic-module=../ngx_brotli
# make modules
# cp objs/*.so /usr/share/nginx/modules/

nginx.conf

下記を追記する

load_module "modules/ngx_http_brotli_filter_module.so";
load_module "modules/ngx_http_brotli_static_module.so";

sites-enabled/default

brotli で圧縮したい location に brotli 設定を追加する

location = /e2ee/wasm.wasm {
        brotli           on;
        brotli_comp_level 5;
        brotli_types application/wasm;
        proxy_http_version 1.1;
        proxy_pass http://127.0.0.1:5000;
}