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.
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.
Chờ tất cả các gói được cài đặt.
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.
Dán cấu hình bên dưới.
Lưu và thoát.
Bây giờ hãy cập nhật kho lưu trữ ubuntu.
Kho lưu trữ Nginx đã được thêm vào.
Đ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.
Bây giờ hãy cài đặt tất cả các gói phụ thuộc cần thiết cho nginx.
Và sau khi hoàn tất cài đặt, hãy sao chép mã nguồn 'ngx_brotli' từ GitHub.
Nginx và ngx_brotli đã được tải xuống.
Đi tới thư mục '/usr/local/src/nginx-*' và chỉnh sửa cấu hình 'rules' của debian.
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.
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.
Lưu ý:
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'.
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 {...}'.
Lưu và thoát.
Kiểm tra cấu hình nginx và đảm bảo không có lỗi.
Hỗ trợ nén brotli đã được bật.
Lưu ý:
Dán cấu hình máy chủ ảo nginx sau vào đó.
Lưu và thoát.
Lưu ý:
Máy chủ ảo nginx mới đã được thêm vào.
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.
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.
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ì?
- Cài đặt Build Dependencies
- 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
- Cấu hình Nginx Virtual Host
- 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
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 -
Mã:
vim /etc/apt/sources.list.d/nginx.list
Mã:
deb http://nginx.org/packages/ubuntu/ bionic nginxdeb-src http://nginx.org/packages/ubuntu/ bionic nginx
Bây giờ hãy cập nhật kho lưu trữ ubuntu.
Mã:
sudo apt-get update
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
Mã:
sudo apt build-dep nginx -y
Mã:
git clone --recursive https://github.com/google/ngx_brotli.git
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
Mã:
--add-module=/usr/local/src/ngx_brotli
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
- -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ý.
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
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;
Kiểm tra cấu hình nginx và đảm bảo không có lỗi.
Mã:
nginx -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í.
Mã:
cd /etc/nginx/
vim conf.d/brotli.conf
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 ý:
- 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.
Mã:
nginx -t
systemctl restart nginx
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
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.