Brotli adalah algoritma kompresi yang dikembangkan oleh Google yang menawarkan banyak manfaat. seperti peningkatan waktu muat situs web dan pengurangan penggunaan bandwidth.
Pada panduan kali ini akan membahas cara mengaktifkan brotli pada server web Apache dan Nginx. Jika memungkinkan Saya akan mengedit kembali panduan ini dengan menambahkan server web lainnya.
Apache #
Enable the Brotli module
Pastikan modul brotli sudah di load pada server web.
grep -iR brotli /etc/httpd/conf.modules.d/
# grep -iR brotli /etc/httpd/conf.modules.d/
/etc/httpd/conf.modules.d/00-base.conf:LoadModule brotli_module modules/mod_brotli.so
Enable HTTPS
Konfigurasikan SSL pada virtualhost. Anda bisa memakai layanan free SSL seperti ZeroSSL atau Let’s Encrypt.
Configure Brotli Compression
Konfigurasikan brotli agar dapat aktif secara global.
nano /etc/httpd/conf.d/brotli.conf
<IfModule mod_brotli.c>
AddOutputFilterByType BROTLI_COMPRESS text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript
BrotliCompressionQuality 4
SetOutputFilter BROTLI_COMPRESS
</IfModule>
Restart the Apache server
systemctl restart httpd
Test Brotli Compression
Untuk pengetesan brotli bisa melalui website Brotli.Pro atau menggunakan perintah curl
seperti berikut.
curl -I -H 'Accept-Encoding: br' https://example.com
$ curl -I -H 'Accept-Encoding: br' http://web1.srv1.de/
HTTP/1.1 200 OK
Date: Sun, 15 Oct 2023 00:43:20 GMT
Server: Apache
X-Powered-By: PHP/7.2.34
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: PHPSESSID=08i89nrtfbchrr2utqm4lv27tj; path=/
Vary: Accept-Encoding
Content-Encoding: br
Content-Length: 1
Content-Type: text/html; charset=UTF-8
Nginx #
Untuk langkah - langkahnya tidak jauh beda seperti Apache.
Enable the Brotli module
Download source code nginx sesuai versi yang Anda gunakan.
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -xaf nginx-1.24.0.tar.gz
Clone modul brotli dari repo github.
git clone --recurse-submodules -j8 https://github.com/google/ngx_brotli
Compile modul brotli.
cd nginx-1.24.0
./configure --with-compat --add-dynamic-module=/root/ngx_brotli
make modules
Jika proses compile berhasil, selanjutnya copy file module.
cp objs/ngx_http_brotli_filter_module.so /usr/share/nginx/modules
cp objs/ngx_http_brotli_static_module.so /usr/share/nginx/modules
Load module brotli.
mkdir -p /etc/nginx/modules.conf.d
nano /etc/nginx/modules.conf.d/brotli.conf
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
Edit nginx.conf
dengan menambahkan konfigurasi berikut pada awal baris atau sebelum baris events {
include /etc/nginx/modules.conf.d/*.conf;
Enable HTTPS
Konfigurasikan SSL pada virtualhost. Anda bisa memakai layanan free SSL seperti ZeroSSL atau Let’s Encrypt.
Configure Brotli Compression
Konfigurasikan brotli agar dapat aktif secara global.
nano /etc/nginx/conf.d/brotli.conf
brotli on;
brotli_comp_level 4;
brotli_static on;
brotli_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
Restart the Nginx server
systemctl restart nginx
Test Brotli Compression
Untuk pengetesan brotli bisa melalui website Brotli.Pro atau menggunakan perintah curl
seperti berikut.
curl -I -H 'Accept-Encoding: br' https://example.com
# curl -I -H 'Accept-Encoding: br' http://example.com
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 15 Oct 2023 10:06:16 GMT
Content-Type: text/html
Connection: keep-alive
Last-Modified: Mon, 18 Sep 2023 10:27:13 GMT
ETag: W/"678-6059f95e4c240"
Content-Encoding: br