Brotli là thuật toán nén không mất dữ liệu mục đích chung do Google phát triển như một giải pháp thay thế cho Gzip, Zopfli và Deflate. Thuật toán này nén dữ liệu bằng cách kết hợp biến thể hiện đại của thuật toán LZ77, mã hóa Huffman và mô hình ngữ cảnh bậc 2, với tỷ lệ nén tương đương với các phương pháp nén mục đích chung tốt nhất hiện có. Tốc độ của nó tương tự như deflate nhưng cung cấp khả năng nén dày đặc hơn.
Brotli là mã nguồn mở theo Giấy phép MIT.
Nginx không có hỗ trợ chính thức nhưng có một mô-đun của bên thứ ba do Google phát triển có tên là ngx_brotli mà bạn có thể sử dụng để thêm hỗ trợ cho Nginx.
Hướng dẫn này sẽ chỉ cho bạn cách thêm hỗ trợ Brotli vào máy chủ web Nginx trên máy chủ CentOS 8.
LƯU Ý: Hướng dẫn này sẽ sử dụng"
Thiết lập múi giờ:
Cập nhật các gói hệ điều hành (phần mềm) của bạn. Đây là bước đầu tiên quan trọng vì nó đảm bảo bạn có các bản cập nhật và bản sửa lỗi bảo mật mới nhất cho các gói phần mềm mặc định của hệ điều hành:
Cài đặt một số gói thiết yếu cần thiết cho việc quản trị cơ bản hệ điều hành CentOS:
Tải xuống và cài đặt Acme.sh:
Kiểm tra phiên bản:
Lấy chứng chỉ RSA và ECDSA cho
Sau khi chạy các lệnh trên, chứng chỉ và khóa của bạn sẽ nằm ở các vị trí sau:
Cài đặt các điều kiện tiên quyết:
Để thiết lập kho lưu trữ yum, hãy tạo tệp có tên
Theo mặc định, kho lưu trữ cho các gói nginx ổn định được sử dụng. Chúng ta cần sử dụng các gói nginx chính. Chạy lệnh sau để sử dụng nguồn chính:
Để cài đặt nginx, hãy chạy lệnh sau:
Kiểm tra phiên bản Nginx:
Bật và khởi động dịch vụ Nginx:
Tải xuống phiên bản mới nhất của mã nguồn Nginx chính và giải nén:
LƯU Ý: Điều rất quan trọng là số phiên bản của gói Nginx và mã nguồn Nginx phải khớp nhau. Nếu bạn đã cài đặt Nginx 1.17.8 từ kho lưu trữ Nginx chính thức, thì bạn phải tải xuống cùng một phiên bản mã nguồn, trong trường hợp này là 1.17.8.
Xóa
Sao chép
Điều hướng đến thư mục mã nguồn Nginx:
Tải xuống các thư viện cần thiết:
Biên dịch
Liệt kê các tệp trong
Đặt quyền thành
Chạy
Kiểm tra cấu hình:
Tạo thư mục gốc tài liệu cho
Tạo máy chủ ảo cho
Điền vào đó cấu hình sau:
Kiểm tra cấu hình:
Tải lại Nginx:
Truy cập trang web của bạn trong trình duyệt web và mở tab mạng của công cụ dành cho nhà phát triển. Bạn sẽ thấy
Vậy là xong. Bạn đã bật tính năng nén Brotli trên hệ thống CentOS 8 của mình.
Brotli là mã nguồn mở theo Giấy phép MIT.
Nginx không có hỗ trợ chính thức nhưng có một mô-đun của bên thứ ba do Google phát triển có tên là ngx_brotli mà bạn có thể sử dụng để thêm hỗ trợ cho Nginx.
Hướng dẫn này sẽ chỉ cho bạn cách thêm hỗ trợ Brotli vào máy chủ web Nginx trên máy chủ CentOS 8.
LƯU Ý: Hướng dẫn này sẽ sử dụng"
[B]johndoe[/b]"
làm người dùng ví dụ và "example.com
"là tên miền ví dụ. Thay thế chúng theo tên của bạn.Yêu cầu
- Máy chủ CentOS 8
- Nginx phiên bản 1.11.5 trở lên
- Tên miền có bản ghi
A
/AAAA
được thiết lập - Chứng chỉ TLS
Các bước ban đầu
Kiểm tra phiên bản CentOS của bạn:
Mã:
cat /etc/centos-release
# CentOS Linux phát hành 8.0.1905 (Core)
Mã:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Mã:
sudo dnf update -y
Mã:
sudo dnf install -y curl wget vim gitunzip socat bash-completion epel-release socat && sudo dnf groupinstall "Công cụ phát triển"
Bước 1 - Cài đặt Acme.sh và lấy chứng chỉ TLS từ Let's Encrypt
Brotli yêu cầu bạn thiết lập và sử dụng HTTPS. Trong phần này, chúng ta sẽ lấy một chứng chỉ đáng tin cậy từ Let's Encrypt.Tải xuống và cài đặt Acme.sh:
Mã:
sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [emailprotected]
cd ~
source ~/.bashrc
Mã:
acme.sh --version
# v2.8.6
example.com:
Mã:
# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail [emailprotected] --ocsp-must-staple --keylength 2048
# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail [emailprotected] --ocsp-must-staple --keylength ec-256
- RSA:
/etc/letsencrypt/example.com
- ECC/ECDSA:
/etc/letsencrypt/example.com_ecc
Bước 2 – Cài đặt Nginx từ Nginx chính thức kho lưu trữ
Bạn sẽ cần tải xuống và cài đặt Nginx chính thức mới nhất từ kho lưu trữ Nginx chính thức:Cài đặt các điều kiện tiên quyết:
Mã:
sudo yum install yum-utils
/etc/yum.repos.d/nginx.repo
với nội dung sau:
Mã:
[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true[nginx-mainline]name=nginx mainline repobaseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/gpgcheck=1enabled=0gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true
Mã:
sudo yum-config-manager --enable nginx-mainline
Mã:
sudo yum install -y nginx
Mã:
sudo nginx -v
# phiên bản nginx: nginx/1.17.8
Mã:
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Bước 3 – Tải xuống và biên dịch mã nguồn Brotli
Sau khi cài đặt Nginx, chúng ta cần xây dựng mô-đun Brotli (ngx_brotli
) dưới dạng mô-đun Nginx động. Từ Nginx phiên bản 1.11.5, có thể biên dịch các mô-đun động riêng lẻ mà không cần biên dịch toàn bộ phần mềm Nginx. Trong vài bước tiếp theo, chúng ta sẽ xây dựng mô-đun Brotli dưới dạng động mà không cần biên dịch toàn bộ Nginx.Tải xuống phiên bản mới nhất của mã nguồn Nginx chính và giải nén:
Mã:
wget https://nginx.org/download/nginx-1.17.8.tar.gz && tar zxvf nginx-1.17.8.tar.gz
Xóa
nginx-1.17.8.tar.gz:
Mã:
rm nginx-1.17.8.tar.gz
ngx_brotli
từ GitHub:
Mã:
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli && git submodule update --init && cd ~
Mã:
cd ~/nginx-1.17.8
Mã:
sudo dnf install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
ngx_brotli
thành một mô-đun động và sao chép nó vào thư mục chuẩn cho các mô-đun Nginx, /etc/nginx/modules:
Mã:
./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules
sudo cp objs/*.so /etc/nginx/modules
/etc/nginx/modules
và bạn sẽ thấy ngx_http_brotli_filter_module.so
và ngx_http_brotli_static_module.so:
Mã:
ls /etc/nginx/modules
644
cho tất cả các tệp .so
:
Mã:
sudo chmod 644 /etc/nginx/modules/*.so
Bước 4 – Cấu hình Nginx
Chúng ta đã sẵn sàng cấu hình hỗ trợ Brotli trong Nginx.Chạy
sudo vim /etc/nginx/nginx.conf
và thêm hai lệnh sau vào đầu tệp để tải Brotli mới modules:
Mã:
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
Mã:
sudo nginx -t
example.com
và tạo index.html
với một số nội dung trong đó:
Mã:
sudo mkdir -p /var/www/example.com
sudo -s
echo "Xin chào từ example.com" >> /var/www/example.com/index.html
exit
example.com:
Mã:
sudo vim /etc/nginx/conf.d/example.com.conf
Mã:
server { listen 80; server_name example.com; # Thay thế bằng tên miền của bạn return 301 https://$server_name$request_uri;}server { listen 443 ssl http2; server_name example.com; # Thay thế bằng gốc tên miền của bạn /var/www/example.com; # Thay thế bằng gốc tài liệu của bạn # RSA ssl_certificate /etc/letsencrypt/example.com/fullchain.cer; ssl_certificate_key /etc/letsencrypt/example.com/example.com.key; # ECDSA ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer; ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key; brotli on; brotli_static on; brotli_types text/plain text/css text/javascript application/javascript text/xml application/xml image/svg+xml application/json;}
Mã:
sudo nginx -t
Mã:
sudo systemctl reload nginx.service
Content-Encoding: br
trong tiêu đề phản hồi. Đó là chỉ báo cho thấy tính năng nén Brotli đang hoạt động.Vậy là xong. Bạn đã bật tính năng nén Brotli trên hệ thống CentOS 8 của mình.