Apache + Brotli

由於現有的環境是 Ubuntu 16.04,其 Apache 版本為 2.4.18
依照官網的說明並沒有直接支援 Brotli 壓縮,所以我自己硬幹了,方法如下

首先,按照 這邊 先安裝 Brotli
記得要有 automake, libtool, apache2-dev,沒有的話安裝一下,不然會有一堆錯誤訊息
裝好到要執行 install 指令的時候,這邊要注意一下你的路徑是否是對的
以 ubuntu 來說,Apache 的 library 是放在 /usr/lib/apache2/modules/,所以要確認一下自己環境的 Apache Library 的路徑

好了之後要來刻 brotli.conf 與 brotli.load
Ubuntu 16.04 把 Apache 的 module 的設定檔案都放在 /etc/apache2/mods-available
所以要自己產這兩個檔案,以下是我那兩個檔案的內容

brotli.load:

LoadModule brotli_module /usr/lib/apache2/modules/mod_brotli.so

brotli.conf:
<IfModule brotli_module>
  # Output filter
  AddOutputFilterByType BROTLI text/html text/plain text/css text/xml application/javascript application/javascriptapplication/rss+xml application/vnd.ms-fontobject application/x-font application/x-font-opentype application/x-font-otf application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/opentype font/otf font/ttf image/svg+xml image/x-icon text/css text/html text/javascript text/plain text/xml

  # SetOutputFilter BROTLI
  # SetEnvIfNoCase Request_URI \.txt$ no-br

  # Compression
  ## BrotliCompressionLevel: 0-11 (default: 11)
  BrotliCompressionLevel 10

  ## BrotliWindowSize: 10-24 (default: 22)
  BrotliWindowSize 22

  # Specifies how to change the ETag header when the response is compressed
  ## BrotliAlterEtag: AddSuffix, NoChange, Remove (default: AddSuffix)
  BrotliAlterEtag AddSuffix

  # Filter note
  BrotliFilterNote Input  brotli_in
  BrotliFilterNote Output brotli_out
  BrotliFilterNote Ratio  brotli_ratio

  LogFormat '"%r" %{brotli_out}n/%{brotli_in}n (%{brotli_ratio}n)' brotli
  CustomLog /var/log/apache2/access_log brotli
</IfModule>

這邊要注意一下 CustomLog 的路徑,不然會爆錯誤訊息

好了之後接下來就執行 a2enmod brotli ,然後再用 apachectl -t 檢查一下設定有沒有問題;一切都正常的話就重啟 Apache 即可


ps. AddOutputFilterByType 參考這裡

留言