ちょっと前に書いた Microsoft 公式の Brotli が使えるモジュールですが、いつの間にかにちゃんとインストーラとドキュメントが公開されていました。これで 1803 以降の IIS では簡単に Brotli が使えます。
最近の IIS に対する動きは、割と歓迎したい流れではあります。
インストーラは以下のドキュメント内で x86 / x64 の両方が公開されています。
ダウンロードしたインストーラは、よく見る IIS Native Module で使われているものです。サイレントでインストールも出来るので、スクリプトで自動実行も出来ますね。
インストール自体は一瞬で終わります。その後 IIS Manager で設定を確認すると、ちゃんと IIS Compression の gzip と br が追加されていることが確認できます。
自分でビルドして設定する必要が無くなったので、格段に使いやすくなりました。これは嬉しい。
インストール後の使い方などは別のドキュメントにまとまっています。といっても、最新の 1803 以降の IIS では複数の scheme に対応しているので、特にやることはないです。
それ以前の IIS の場合は URL Rewrite を使って br を優先的に扱う必要があります。
ちなみに App Service でも Site Extension を使うことで良い感じに Brotli を有効化することが出来ます。dll の条件を調べるのが面倒だったので、前回自分でビルドした dll を使って試しました。
XDT は以下のように用意しました。これを見て分かる人だけが試してもらえれば良いと思います。
<?xml version="1.0" encoding="utf-8"?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <system.webServer> <httpCompression> <scheme name="br" dll="%XDT_EXTENSIONPATH%\iisbrotli.dll" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)" /> </httpCompression> <rewrite> <allowedServerVariables> <add name="HTTP_ACCEPT_ENCODING" xdt:Transform="InsertIfMissing" /> </allowedServerVariables> <rules> <rule name="Prioritize Brotli" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)"> <match url=".*" /> <conditions> <add input="{HTTP_ACCEPT_ENCODING}" pattern="\bbr(?!;q=0)\b" /> </conditions> <serverVariables> <set name="HTTP_ACCEPT_ENCODING" value="br" /> </serverVariables> </rule> </rules> </rewrite> </system.webServer> </configuration>
基本的にはドキュメントに書いてあった URL Rewrite 定義をそのまま持ってきただけです。
実際に App Service に Site Extension として追加すると、ちゃんと Brotli が有効になりました。
サイトレベルでの対応なので、アプリケーション側の設定を弄る必要はないはずです。
同じような方法で IIS CORS Module を App Service に追加することも出来ると思いますが、この手のライブラリは配布方法が地味に面倒なので、最初からインストールしておいてもらいたい気持ちです。