Brotli là gì?
Brotli là một chuẩn nén dữ liệu mới được phát triển bởi Google. Nó được tối ưu bằng nhiều phương pháp khác nhau cho các ứng dụng web như HTML, CSS, JS, v.v… Hiện nay phần lớn các browser phổ biến đã hỗ trợ Brotli mặc định, như Chrome, Firefox hay Edgle.
Theo số liệu mà Google đưa ra, Brotli đang đứng đầu về tốc độ nén, giải nén và có khả năng nén tập tin về mức dung lượng thấp nhất trong hầu hết các trường hợp so với các thuật toán khác. Cụ thể, về dung lượng, Brotli có khả năng nén tốt hơn 25% so với chuẩn nén Gzip. Do vậy, các website khi được nén bởi Brotli sẽ giúp người dùng truy cập website nhanh hơn và đồng thời giảm tải cho Server đi khá nhiều.
Kích hoạt và cài đặt Brotli cho Nginx Centmin Mod
ngx_brotli là một module được Google phát triển giúp cho các web server chạy trên Nginx có thể sử dụng được chuẩn nén Brotli.
Mình đã có một bài viết hướng dẫn cách cài đặt Brotli cho Nginx với Server sử dụng LEMP stack VPSSIM. Trong bài này mình sẽ hướng dẫn kích hoạt Brotli cho Nginx với LEMP stack Centmin Mod.
Kích hoạt và cài đặt Brotli là một trong những mẹo để tăng hiệu suất cho Server mà tác giả của Centmin Mod khuyến nghị, và cách kích hoạt nó cũng dễ hơn so với việc bạn tự cài Brotli từ source.
Đầu tiên là đăng nhập vào server với quyền quản trị cao nhất, nếu sử dụng Vultr bạn có thể theo cách sau để đăng nhập VPS trên macOS. Sau khi đăng nhập đầu tiên là chỉnh sửa file config của Centmin Mod bằng lệnh sau.
nano /etc/centminmod/custom_config.inc
Thêm đoạn cấu hình vào file config
NGXDYNAMIC_BROTLI='y' NGINX_LIBBROTLI='y' NGINX_BROTLIDEP_UPDATE='y'
Nhớ lưu file (Ctr + o) và đóng file (Crt +x). Sau đó mở menu centmin mod, chọn menu số 4 để compile lại Nginx.
-------------------------------------------------------- Centmin Mod Menu 123.09beta01 centminmod.com -------------------------------------------------------- 1). Centmin Install 2). Add Nginx vhost domain 3). NSD setup domain name DNS 4). Nginx Upgrade / Downgrade 5). PHP Upgrade / Downgrade 6). XCache Re-install 7). APC Cache Re-install 8). XCache Install 9). APC Cache Install 10). Memcached Server Re-install 11). MariaDB MySQL Upgrade & Management 12). Zend OpCache Install/Re-install 13). Install/Reinstall Redis PHP Extension 14). SELinux disable 15). Install/Reinstall ImagicK PHP Extension 16). Change SSHD Port Number 17). Multi-thread compression: zstd,pigz,pbzip2,lbzip2 18). Suhosin PHP Extension install 19). Install FFMPEG and FFMPEG PHP Extension 20). NSD Install/Re-Install 21). Data Transfer (TBA) 22). Add WordPress Nginx vhost + Cache Plugin 23). Update Centmin Mod Code Base 24). Exit -------------------------------------------------------- Enter option [ 1 - 24 ] 4
Sau khi cài đặt lại Nginx xong, ta kiểm tra xem module ngx_brotli đã được kích hoạt chưa bằng lệnh kiểm tra phiên bản Nginx.
nginx -V
Nếu thấy dòng –add-dynamic-module=../ngx_brotli tức là module ngx_brotli đã được kích hoạt.
nginx version: nginx/1.17.9 (240320-035433-centos7-kvm-1d5b645) built by gcc 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC) built with OpenSSL 1.1.1e 17 Mar 2020 TLS SNI support enabled configure arguments: --with-ld-opt='-Wl,-E -L/usr/local/zlib-cf/lib -L/usr/local/lib -ljemalloc -Wl,-z,relro -Wl,-rpath,/usr/local/zlib-cf/lib:/usr/local/lib -flto=1 -fuse-ld=gold'
--with-cc-opt='-I/usr/local/zlib-cf/include
-I/usr/local/include -m64 -march=x86-64
-mavx -mavx2 -mpclmul -msse4 -msse4.1 -msse4.2 -DTCP_FASTOPEN=23 -g -O3 -fstack-protector-strong -flto=1 -fuse-ld=gold --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wimplicit-fallthrough=0 -fcode-hoisting -Wno-cast-function-type -Wno-format-extra-args -Wp,-D_FORTIFY_SOURCE=2 -Wno-deprecated-declarations'
--sbin-path=/usr/local/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf
--build=240320-035433-centos7-kvm-1d5b645 --with-compat --with-http_stub_status_module
--with-http_secure_link_module --with-libatomic --with-http_gzip_static_module
--add-dynamic-module=../ngx_brotli --with-http_sub_module --with-http_addition_module
--with-http_image_filter_module=dynamic --with-http_geoip_module --with-stream_geoip_module
--with-stream_realip_module --with-stream_ssl_preread_module --with-threads --with-stream --with-stream_ssl_module
--with-http_realip_module --add-dynamic-module=../ngx-fancyindex-0.4.2 --add-module=../ngx_cache_purge-2.5 --add-dynamic-module=../ngx_devel_kit-0.3.0 --add-dynamic-module=../set-misc-nginx-module-0.32 --add-dynamic-module=../echo-nginx-module-0.61 --add-module=../redis2-nginx-module-0.15 --add-module=../ngx_http_redis-0.3.7 --add-module=../memc-nginx-module-0.18 --add-module=../srcache-nginx-module-0.32rc1 --add-dynamic-module=../headers-more-nginx-module-0.33 --with-pcre-jit --with-zlib=../zlib-cloudflare-1.3.0 --with-http_ssl_module --with-http_v2_module --with-openssl=../openssl-1.1.1e --with-openssl-opt='enable-ec_nistp_64_gcc_128 enable-tls1_3 -fuse-ld=gold'
Sau khi kích hoạt Brotli cho Nginx trên server, có thể kiểm tra website đã được nén bằng brotli hay chưa bằng số bằng một số trang web như. https://nixcp.com/tools/brotli-test/
Trong thông tin header bạn sẽ thấy một dòng là content-encoding: br tức là Brotli đã được kích hoạt.
Chúc các bạn thành công!
rat don gian va de hieu