gzip
là một module nén dữ liệu phổ biến trên Nginx. Đây là một module được dùng để làm giảm kích thước của các file trên website, giúp cho trang web tải nhanh hơn và tiết kiệm chi phí mua băng thông. Trong bài viết này, Vietnix sẽ hướng dẫn người dùng cách thêm gzip
module vào Nginx trên CentOS 7, giúp giảm kích thước của các file nội dung gửi đến người dùng truy cập vào trang web.
Các điều kiện cần để cài đặt
Để làm theo hướng dẫn này, bạn cần một số yêu cầu như sau:
- Một server CentOS 7 với non-root user có quyền sudo.
- Nginx đã được cài đặt sẵn trên server.
Các bước cài đặt gzip Module vào Nginx trên CentOS 7
Bước 1: Tạo các file test
Trong bước này, bạn tạo một số file test trong thư mục của Nginx để kiểm tra chức năng nén của gzip
.
Trên thực tế, Nginx không kiểm tra nội dung file nào được sử dụng vì điều này làm chậm tốc độ phục vụ. Thay vào đó, Nginx tìm kiếm phần mở rộng của file để xác định loại MIME tương ứng và biểu thị mục đích của file. Vì vậy nội dung của các file test sẽ không liên quan đến việc kiểm tra file của Nginx.
Trước hết hãy đặt tên cho các file test một cách hợp lý để tối ưu hóa Nginx. Chẳng hạn như làm cho một hình ảnh hay một file khác như stylesheet bằng cách sử dụng phần mở rộng của file một cách thích hợp.
Trong hướng dẫn này, Vietnix sẽ thử nghiệm các file test có kích thước là 1KB. Điều này giúp bạn xác minh việc Nginx có sử dụng tính năng nén gzip
một cách cần thiết hay không.
Tạo một file với kích thước 1KB và đặt tên là test.html
trong thư mục của Nginx bằng cách sử dụng lệnh truncate
. Phần mở rộng của file này biểu thị rằng đó là một HTML page.
sudo truncate -s 1k /usr/share/nginx/html/test.html
Tạo thêm một vài file test theo cách tương tự: Một file hình ảnh jpg
, một file CSS
stylesheet và một file JavaScript js
.
sudo truncate -s 1k /usr/share/nginx/html/test.jpg
sudo truncate -s 1k /usr/share/nginx/html/test.css
sudo truncate -s 1k /usr/share/nginx/html/test.js
Như đã trình bày ở phần điều kiện, để thực hiện thêm gzip
vào Nginx trên CentOS 7, bạn cần có một máy chủ cài đặt hệ điều hành CentOS 7 với cấu hình phù hợp.
Nếu chưa có máy chủ để thực hiện, bạn có thể tham khảo các gói VPS tại Vietnix. Với nhiều gói VPS đa dạng về cấu hình và giá thành phù hợp, Vietnix sẽ là sự lựa chọn tin cậy để bạn có thể triển khai các ứng dụng và dịch vụ của mình hiệu quả.
Các gói VPS do Vietnix cung cấp bao gồm:
- VPS Giá Rẻ.
- VPS Phổ Thông.
- VPS Cao Cấp.
- VPS NVMe.
- VPS GPU.
Ưu điểm của VPS tại Vietnix:
- Tốc độ cao, ổn định.
- Backup tự động 1 tuần/lần.
- Hỗ trợ đa dạng hệ điều hành, trong đó có hệ điều hành CentOS 7.
- Toàn quyền quản trị với giao diện dễ sử dụng.
- Kích hoạt VPS ngay lập tức sau khi đăng ký thành công.
- Tặng bộ theme & plugin WordPress trị giá đến 26.000.000 VND.
Bên cạnh đó, đội ngũ kỹ thuật viên giàu kinh nghiệm của Vietnix sẽ giúp bạn giải quyết mọi vấn đề liên quan đến VPS một cách nhanh chóng. Liên hệ ngay với Vietnix để được tư vấn chi tiết.
Bước 2: Kiểm tra cách hoạt động của Nginx
Bước tiếp theo là kiểm tra xem Nginx hoạt động như thế nào với quá trình nén các file test vừa được tạo ra ở trên.
Hãy kiểm tra xem file HTML có tên là test.html
có được nén hay không. Sử dụng lệnh sau để yêu cầu một file từ server của Nginx và chỉ định cung cấp nội dung nén gzip
bằng cách sử dụng HTTP (Accept-Encoding: gzip
).
curl -H "Accept-Encoding: gzip" -I http://localhost/test.html
Output sẽ hiện ra như sau:
HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Fri, 11 Mar 2016 12:53:06 GMT
Content-Type: text/html
Content-Length: 1024
Last-Modified: Fri, 11 Mar 2016 12:48:02 GMT
Connection: keep-alive
ETag: "56e2be82-400"
Accept-Ranges: bytes
Trong phản hồi bên trên, không có đề cập nào liên quan đến gzip
. Điều này cho biết rằng tính năng nén gzip
chưa được bật trên server. Đó là bởi vì trên CentOS 7, hỗ trợ gzip
đã bị tắt hoàn toàn trong cấu hình Nginx mặc định. Khi tính năng nén gzip
được bật, bạn sẽ thấy dòng code Content-Encoding: gzip
hiển thị ở trong output.
Không chỉ các HTML page mà mọi file khác cũng không được hỗ trợ tính năng nén. Để xác minh điều này, bạn có thể làm điều tương tự với file test.jpg
đã được tạo bên trên.
curl -H "Accept-Encoding: gzip" -I http://localhost/test.jpg
Kết quả sẽ cho ra output như sau:
HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Fri, 11 Mar 2016 12:58:03 GMT
Content-Type: image/jpeg
Content-Length: 1024
Last-Modified: Fri, 11 Mar 2016 12:48:05 GMT
Connection: keep-alive
ETag: "56e2be85-400"
Accept-Ranges: bytes
Như bạn đã thấy, không có dòng code Content-Encoding: gzip
trong phần output, điều này có nghĩa là file này chưa được hỗ trợ tính năng nén gzip
.
Bạn có thể kiểm tra tương tự với file CSS
style sheet.
curl -H "Accept-Encoding: gzip" -I http://localhost/test.css
Một lần nữa, kết quả output trả về vẫn không có sự đề cập đến tính năng hỗ trợ nén gzip
:
HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Fri, 11 Mar 2016 12:59:04 GMT
Content-Type: text/css
Content-Length: 1024
Last-Modified: Fri, 11 Mar 2016 12:48:05 GMT
Connection: keep-alive
ETag: "56e2be85-400"
Accept-Ranges: bytes
Bước 3: Kích hoạt và cấu hình gzip Module của Nginx
Sau khi đã kiểm tra cách hoạt động của Nginx với các file test khi chưa bật tính năng nén gzip
, bước tiếp theo Vietnix sẽ hướng dẫn cấu hình cho Nginx để bật tính năng nén cho tất cả các file.
gzip
module là một core module trong Nginx, nghĩa là người dùng cần phải cài đặt và cấu hình cho module này. Trong bản cài đặt mới nhất của Nginx trên CentOS 7, tất cả các file có phần mở rộng là .conf
từ directory /etc/nginx/conf.d
sẽ được tự động tải. Điều này cho phép người dùng dễ dàng kích hoạt và cấu hình gzip
module bằng những dòng lệnh khá đơn giản.
Để bật gzip
module trong Nginx, hãy tạo file với tên gzip.conf
bằng cách sử dụng nano
hoặc một text editor bất kỳ nào mà bạn yêu thích.
sudo nano /etc/nginx/conf.d/gzip.conf
Output sẽ được hiển thị như sau:
##
# `gzip` Settings
#
#
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
Hãy cùng xem qua các cài đặt và cấu hình đã được áp dụng:
gzip on
: Chỉ thị rằng tính năng néngzip
đã được bật.gzip_disable "msie6"
: Loại trừ trình duyệt Internet Explorer 6 vì IE6 không hỗ trợ néngzip
.gzip_vary
vàgzip_proxied
: Đảm bảo rằng proxy server giữa trình duyệt và server nhận dạng nén chính xác.gzip_comp_level 6
: Đặt số lượng file sẽ được nén. Số càng cao thì mức nén file và mức sử dụng tài nguyên càng cao, mức 6 được coi là ở mức hợp lý.gzip_http_version 1.1
: Được sử dụng để hạn chế tính năng néngzip
cho các trình duyệt hỗ trợ HTTP/1.1 protocol.-
gzip_min_length 256
: Yêu cầu Nginx không nén các file nhỏ hơn 256 byte vì hầu như việc nén các file này không làm giảm đáng kể kích thước file và gây ra tiêu tốn tài nguyên của server. gzip_types
: Liệt kê tất cả các loại MIME được nén. Trong trường hợp này, danh sách được nén bao gồm: HTML page, CSS stylesheet, file Javascript và JSON, file XML, các icon, hình ảnh SVG và các font chữ được sử dụng trên website.
Để kích hoạt cấu hình mới, hãy khởi động lại Nginx với lệnh sau:
sudo systemctl restart nginx
Bước 4: Xác minh khi cài đặt thành công
Bước tiếp theo là kiểm tra xem tính năng nén gzip
đã được thêm trên Nginx có hoạt động tốt hay không.
Thực hiện như bước 2 bằng cách sử dụng lệnh curl
trên từng file test và kiểm tra xem output có dòng code Content-Encoding: gzip
hay không.
curl -H "Accept-Encoding: gzip" -I http://localhost/test.html
Trong output bên dưới, dòng code Content-Encoding: gzip
: đã được hiển thị:
HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Fri, 11 Mar 2016 13:19:16 GMT
Content-Type: text/html
Last-Modified: Fri, 11 Mar 2016 12:48:02 GMT
Connection: keep-alive
Vary: Accept-Encoding
Content-Encoding: gzip
Hãy kiểm tra tất cả các file test khác với cách tương tự:
curl -H "Accept-Encoding: gzip" -I http://localhost/test.jpg
curl -H "Accept-Encoding: gzip" -I http://localhost/test.css
curl -H "Accept-Encoding: gzip" -I http://localhost/test.js
Trong các file test trên, chỉ có file test.jpg
là không được nén vì đây là một file hình ảnh.
Khi đã hiển thị trong output dòng code Content-Encoding: gzip
.
Sau khi xem xong hướng dẫn cách thêm gzip
module vào Nginx trên CentOS 7, bạn có thể liên hệ Vietnix để chọn lựa các gói VPS phù hợp nhằm triển khai thực hiện theo hướng dẫn trong bài viết. Vietnix là một nhà cung cấp dịch vụ VPS tốc độ cao uy tín hàng đầu tại Việt Nam hiện nay với nhiều điểm mạnh như:
- Kinh nghiệm 10 năm trong lĩnh vực cung cấp dịch vụ VPS.
- Hơn 50.000 khách hàng đã tin tưởng sử dụng dịch vụ của Vietnix.
- Hơn 100.000 dịch vụ đã được kích hoạt.
- Đã nhận được giải thưởng Thương hiệu Việt Nam xuất sắc 2022.
- 97% khách hàng dùng VPS của Vietnix có phản hồi tích cực và giới thiệu cho người quen.
Chỉ cần đưa ra nhu cầu của bạn, Vietnix sẽ tư vấn giải pháp phù hợp. Liên hệ ngay!
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
- Hotline: 1800 1093 – 07 088 44444
- Email: sales@vietnix.com.vn
Lời kết
Sử dụng tính năng nén gzip
module trong Nginx mang lại nhiều lợi ích, giúp người dùng truy cập trang web nhanh hơn. Hy vọng những hướng dẫn trên đây sẽ giúp bạn cài đặt và cấu hình gzip
module một cách thuận lợi và dễ dàng. Nếu có bất kỳ thắc mắc gì, hãy để lại dưới phần bình luận, Vietnix sẽ hỗ trợ giải đáp cho bạn.