Cách cài đặt Nginx với Brotli Compression trên Ubuntu 18.04 LTS

theanh

Administrator
Nhân viên
Nginx (engine-x) là một máy chủ HTTP hiệu suất cao mã nguồn mở, proxy ngược và máy chủ proxy IMAP/POP3. Các tính năng nổi bật của Nginx là tính ổn định, bộ tính năng phong phú, cấu hình đơn giản và mức tiêu thụ bộ nhớ thấp.

Brotli là một thuật toán nén mã nguồn mở do Google tạo ra. Brotli cung cấp khả năng nén tốt hơn và không mất dữ liệu hơn gzip, và hiện nay được hỗ trợ bởi các trình duyệt và máy chủ web chính.

Thông tin thêm về hiệu suất của Brotli:
Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước cách thêm hỗ trợ cho thuật toán nén Brotli vào máy chủ web Nginx. Chúng ta sẽ xây dựng một gói nginx tùy chỉnh hỗ trợ thuật toán nén brotli. Chúng tôi sẽ sử dụng phiên bản Ubuntu mới nhất, cộng với chúng tôi sẽ xây dựng gói Anginx cho hệ điều hành Debian.

Điều kiện tiên quyết​

  • Ubuntu 18.04
  • Quyền root

Chúng tôi sẽ làm gì?​

  1. Cài đặt Build Dependencies
  2. Cài đặt Nginx với ngx_brotli
    • Thêm Nginx Repository
    • Tải xuống Nginx và ngx_brotli
    • Xây dựng Nginx với Hỗ trợ ngx_brotli
    • Cài đặt Nginx và Bật Hỗ trợ ngx_brotli
  3. Cấu hình Nginx Virtual Host
  4. Kiểm tra

Bước 1 - Cài đặt Build Dependencies​

Điều đầu tiên chúng ta cần làm trong hướng dẫn này là cài đặt các build dependency vào hệ thống.

Cập nhật kho lưu trữ Ubuntu và sau đó cài đặt tất cả các gói build dependency bằng lệnh apt bên dưới.
Mã:
sudo apt update
sudo apt install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
Chờ tất cả các gói được cài đặt.

Bước 2 - Cài đặt Nginx với ngx_brotli​

Trong bước này, chúng ta sẽ cài đặt gói nginx tùy chỉnh hỗ trợ thuật toán nén brotli trên Hệ thống Ubuntu. Và chúng tôi sẽ sử dụng phiên bản ổn định mới nhất của gói nginx có thể tải xuống từ kho lưu trữ nginx chính thức.

Thêm kho lưu trữ Nginx​

Trước khi thêm kho lưu trữ nginx, hãy thêm ký hiệu khóa nginx bằng lệnh bên dưới.
Mã:
curl -L https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
Bây giờ hãy tạo tệp kho lưu trữ nginx mới 'nginx.list' trên thư mục '/etc/apt/sources.list.d' bằng trình soạn thảo vim.
Mã:
vim /etc/apt/sources.list.d/nginx.list
Dán cấu hình bên dưới.
Mã:
deb http://nginx.org/packages/ubuntu/ bionic nginxdeb-src http://nginx.org/packages/ubuntu/ bionic nginx
Lưu và thoát.

Bây giờ hãy cập nhật kho lưu trữ ubuntu.
Mã:
sudo apt-get update
Kho lưu trữ Nginx đã được thêm vào.


Tải xuống Nginx và nguồn ngx_brotli files​

Bây giờ chúng ta sẽ tải xuống các gói Nginx từ kho lưu trữ nginx bằng lệnh apt.

Đi đến thư mục '/usr/local/src' và tải xuống nguồn Nginx bằng lệnh apt bên dưới.
Mã:
cd /usr/local/src
sudo apt source nginx
Bây giờ hãy cài đặt tất cả các gói phụ thuộc cần thiết cho nginx.
Mã:
sudo apt build-dep nginx -y
Và sau khi hoàn tất cài đặt, hãy sao chép mã nguồn 'ngx_brotli' từ GitHub.
Mã:
git clone --recursive https://github.com/google/ngx_brotli.git
Nginx và ngx_brotli đã được tải xuống.


Xây dựng Nginx với Hỗ trợ ngx_brotli​

Bây giờ chúng ta cần chỉnh sửa quy tắc dựng Nginx mặc định, chúng ta cần thêm ngx_brotli vào quy tắc dựng của các gói.

Đi tới thư mục '/usr/local/src/nginx-*' và chỉnh sửa cấu hình 'rules' của debian.
Mã:
cd /usr/local/src/nginx-*/
vim debian/rules
Bây giờ bạn sẽ có hai môi trường dựng cho 'config.env.nginx' và 'config.env.nginx_debug'. Thêm tùy chọn '--add-module=' cho ngx_brotli vào cả hai môi trường đã xây dựng.
Mã:
--add-module=/usr/local/src/ngx_brotli
Lưu và thoát.



Và chúng ta đã sẵn sàng để biên dịch và xây dựng gói nginx với hỗ trợ ngx_brotli.

Chạy lệnh dpkg bên dưới.
Mã:
sudo dpkg-buildpackage -b -uc -us
Lưu ý:
  • -b: Chỉ xây dựng nhị phân, không có tệp nguồn.
  • -uc: Tệp .buildinfo và .changes chưa ký.
  • -us: Gói nguồn chưa ký.
Khi quá trình xây dựng hoàn tất, bạn sẽ nhận được các gói nginx-*.deb trong thư mục '/usr/local/src' như hiển thị bên dưới.
Mã:
ls -lah

Cài đặt Nginx và Bật Hỗ trợ Brotli​

Quá trình xây dựng nginx với ngx_brotli đã hoàn tất, hãy cài đặt các gói nginx-*.deb bằng lệnh dpkg bên dưới.
Mã:
cd /usr/local/src/
sudo dpkg -i *.deb


Nginx với hỗ trợ ngx_brotli đã được cài đặt.

Bây giờ hãy vào thư mục cấu hình '/etc/nginx' và chỉnh sửa tệp cấu hình 'nginx.conf'.
Mã:
cd /etc/nginx/
vim nginx.conf
Bật ngx_brotli trên nginx bằng cách thêm cấu hình bên dưới vào phần 'http {...}'.
Mã:
brotli on; brotli_comp_level 6; brotli_static on; brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/bmp image/svg+xml;
Lưu và thoát.



Kiểm tra cấu hình nginx và đảm bảo không có lỗi.
Mã:
nginx -t
Hỗ trợ nén brotli đã được bật.

Bước 3 - Cấu hình Nginx Virtual Host​

Trong bước này, chúng tôi sẽ thử tạo một máy chủ ảo mới cho tên miền nginx.hakase-labs.io.

Lưu ý:
  • Nén Brotli chỉ hỗ trợ trang web HTTPS, vì vậy hãy đảm bảo bạn có các tệp chứng chỉ cho tên miền của bạn hoặc bạn có thể tạo chứng chỉ SSL Letsencrypt miễn phí.
Truy cập thư mục cấu hình '/etc/nginx' và tạo cấu hình máy chủ ảo mới 'brotli.conf'.
Mã:
cd /etc/nginx/
vim conf.d/brotli.conf
Dán cấu hình máy chủ ảo nginx sau vào đó.
Mã:
# Chuyển hướng HTTP sang HTTPS Nginx
server { listen 80; server_name nginx.hakase-labs.io; return 301 https://$host$request_uri;}# Cấu hình SSLserver { listen 443 ssl http2; server_name nginx.hakase-labs.io;
 ssl_certificate /etc/letsencrypt/live/nginx.hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nginx.hakase-labs.io/privkey.pem; # Cải thiện hiệu suất HTTPS với việc tiếp tục phiên ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; # Bật tính năng bảo vệ phía máy chủ chống lại các cuộc tấn công BEAST ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5; # Vô hiệu hóa SSLv3 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 # vị trí thư mục gốc của web / { root /usr/share/nginx/html; }}
Lưu và thoát.

Lưu ý:
  • Thay đổi tên miền bằng tên miền của riêng bạn.
  • Thay đổi đường dẫn chứng chỉ SSL.
Bây giờ hãy kiểm tra cấu hình nginx và đảm bảo không có lỗi, sau đó khởi động lại dịch vụ.
Mã:
nginx -t
systemctl restart nginx
Máy chủ ảo nginx mới đã được thêm vào.

Bước 4 - Kiểm tra​

Mở trình duyệt web của bạn và nhập tên miền, của tôi là:


Bây giờ bạn sẽ được chuyển hướng đến kết nối https. Nhấp chuột phải vào trang và nhấp vào 'Kiểm tra phần tử'. Nhấp vào tab 'Mạng' và tải lại trang.

Nhấp vào chi tiết yêu cầu và bạn sẽ nhận được tất cả tiêu đề yêu cầu và phản hồi từ máy chủ web như được hiển thị bên dưới.



Trên phần 'Tiêu đề phản hồi', bạn sẽ thấy 'content-encoding: br' để hỗ trợ brotli.

Bây giờ nếu bạn muốn kiểm tra khác, bạn có thể sử dụng lệnh curl như được hiển thị bên dưới.
Mã:
curl -H 'Accept-Encoding: br' -I https://nginx.hakase-labs.io
Và bạn sẽ thấy kết quả 'content-encoding: br' để hỗ trợ brotli.



Quá trình cài đặt Nginx với Hỗ trợ nén Brotli trên Ubuntu 18.04 đã hoàn tất thành công.

Tài liệu tham khảo​

 
Back
Bên trên