Ngx_pagespeed là một module của Nginx được phát triển để tối ưu hóa website một cách tự động. Bài viết này sẽ hướng dẫn bạn cách thêm ngx_pagespeed vào Nginx trên CentOS 7 giúp giảm kích thước của các tài nguyên trên trang web để giảm thời gian tải trang cho client.
Giới thiệu về ngx_pagespeed
Ngx_pagespeed còn được gọi là pagespeed, là một module của Nginx được thiết kế để tự động tối ưu hóa trang web của bạn bằng cách giảm kích thước các tài nguyên, do đó giảm thời gian mà trình duyệt của khách hàng cần để tải chúng.
Bài viết này Vietnix sẽ hướng dẫn bạn cài đặt và cấu hình module pagespeed cho Nginx. Điều quan trọng bạn nên biết rằng Nginx không hỗ trợ Dynamic Loading của các module có sẵn trong các web server khác như Apache. Vì Nginx không hỗ trợ tính năng này, bạn cần xây dựng Nginx từ mã nguồn để thêm module.
Tuy nhiên việc sở hữu các gói tùy chỉnh riêng của bạn đi kèm với một nhược điểm, vì vậy bạn hoàn toàn chịu trách nhiệm cập nhật chúng khi có phiên bản mới. Hãy cân nhắc điều này khi xem xét ưu và nhược điểm của việc sử dụng ngx_pagespeed.
Yêu cầu cần đáp ứng
Để làm theo hướng dẫn bài viết này, bạn cần đáp ứng các yêu cầu sau:
- Một máy chủ CentOS 7.
- Một người dùng non-root có quyền sudo.
Bước 1 – Download mã nguồn và các phụ thuộc của mã nguồn
Bạn cần có tất cả các phần mềm cần thiết để biên dịch và test Nginx. Hãy gõ lệnh sau để tiến hành cài đặt:
sudo yum install wget curl unzip gcc-c++ pcre-devel zlib-devel
Sau đó, tạo một thư mục mới trong thư mục home để tải source package cho Nginx:
mkdir ~/custom-nginx
Chuyển đến thư mục mới được tạo:
cd ~/custom-nginx
Sau đó, tải xuống source package Nginx trong thư mục này từ trang web chính thức của Nginx. Bài hướng dẫn này sử dụng phiên bản 1.8.0 được tải xuống với lệnh:
sudo wget http://nginx.org/download/nginx-1.8.0.tar.gz
Bạn hãy giải nén package vừa tải xuống bằng lệnh:
sudo tar zxvf nginx-1.8.0.tar.gz
Hãy liệt kê nội dung của thư mục ~/custom-nginx
bằng lệnh sau:
ls ~/custom-nginx
Output của bạn nên giống như thế này:
Output of ls ~/custom-nginx
nginx-1.8.0 nginx-1.8.0.tar.gz
Để bắt đầu thêm ngx_pagespeed module, bạn cần truy cập vào thư mục modules
trong thư mục được giải nén nginx-1.8.0
:
cd nginx-1.8.0/src/http/modules/
Trong thư mục này, bạn tải source archive ngx_pagespeed mới nhất từ Github repository với lệnh:
sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip
Khi quá trình tải xuống hoàn tất, bạn giải nén file đó bằng tiện ích unzip
như sau:
sudo unzip master.zip
Thư mục mới có tên ngx_pagespeed-master
sẽ được tạo trong thư mục ~/custom-nginx/nginx-1.8.0/src/http/modules/
của bạn. Để thuận tiện, hãy đổi tên thư mục này thành ngx_pagespeed
:
sudo mv ngx_pagespeed-master ngx_pagespeed
Tiếp theo, truy cập vào thư mục mới ngx_pagespeed
:
cd ngx_pagespeed
Từ đó, bạn hãy tải xuống các PageSpeed Optimization Libraries (psol) cần thiết cho việc biên dịch bằng lệnh:
sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz
Nếu liên kết đến psol archive không hoạt động vào thời điểm bạn đọc bài viết này thì hãy bỏ qua bước này. Nếu bạn bị thiếu thư viện trong quá trình biên dịch ở các bước tiếp theo, bạn sẽ thấy một lỗi với hướng dẫn cập nhật.
Cuối cùng, giải nén psol package trong thư mục ~/custom-nginx/nginx-1.4.6/debian/modules/ngx_pagespeed
:
sudo tar -xzvf 1.9.32.6.tar.gz
Bước 2 – Cấu hình mã nguồn và biên dịch
Ở bước này, bạn đã sẵn sàng cấu hình mã nguồn Nginx bao gồm pagespeed module. Hãy đến thư mục chính của mã nguồn Nginx với lệnh sau:
cd ~/custom-nginx/nginx-1.8.0/
Sau đó, chạy lệnh cấu hình mã nguồn với lệnh:
sudo ./configure --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/ --user=nobody --group=nobody --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid
Tùy chọn cấu hình quan trọng nhất ở trên là --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/
. Tùy chọn này đảm bảo pagespeed module sẽ là một phần của quá trình biên dịch Nginx. Hãy nhớ thay thế your_user
bằng tên người dùng của bạn trong đường dẫn bên trên.
Để tiện lợi, bạn nên tùy chỉnh một vài thiết lập khác như vị trí của log file và user/group mà server nên chạy dưới đó.
Cấu hình hoàn tất, bạn bắt đầu quá trình biên dịch bằng lệnh:
sudo make
Quá trình này sẽ mất tối đa mười phút tùy thuộc vào tài nguyên của máy chủ. Sau đó quá trình hoàn tất, bạn có thể cài đặt phần mềm với lệnh sau:
sudo make install
Bạn có thể thấy Nginx đã tùy chỉnh được cài đặt trong thư mục /usr/local/nginx
. Để tiện lợi hơn, bạn hãy tạo hai symbolic link. Đầu tiên là cho các file cấu hình:
sudo ln -s /usr/local/nginx/conf/ /etc/nginx
Lệnh này sẽ cho phép bạn tìm các file cấu hình trong thư mục /etc/nginx/
– nơi file cấu hình được lưu trữ.
Bạn cũng nên tạo symbolic link đến main binary trong thư mục /usr/sbin/
. Việc tạo liên kết này giúp bạn dễ dàng tìm thấy main binary và có thể include file này trong startup script. symbolic link cũng được sử dụng cho startup script sau này. Để tạo liên kết, bạn hãy chạy lệnh sau đây:
sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
Bước 3 – Tạo Startup Script
Trong quá trình cài đặt, một số tác vụ sẽ tự động thực hiện tạo người dùng và nhóm không cần thiết để Nginx có thể chạy. Tuy nhiên, sau khi cài đặt xong, người dùng vẫn phải tự tạo một startup script. Rất may mắn là trên trang chủ của Nginx đã có sẵn một startup script trên trang chủ của hãng dành cho CentOS 7 giúp người dùng dễ dàng hơn trong việc tạo startup script.
Trước tiên, bạn hãy tạo một file mới trong thư mục /etc/init.d/
:
sudo nano /etc/init.d/nginx
Sau đó, truy cập vào trang web sau https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/
, sao chép script và dán vào file mới này.
Cuối cùng, hãy đặt quyền thực thi cho script này bằng cách chạy lệnh:
sudo chmod +x /etc/init.d/nginx
Sau đó, bạn có thể start Nginx lần đầu tiên bằng lệnh:
sudo service nginx start
Để đảm bảo rằng Nginx khởi động và dừng cùng với máy chủ, bạn hãy thêm Nginx vào các runlevel mặc định với lệnh:
sudo chkconfig nginx on
Bước 4 – Kích hoạt module Pagespeed
Khi đã cài đặt Nginx xong, bạn sẽ chuyển đến bước tiếp theo là kích hoạt module ngx_pagespeed.
Trước khi kích hoạt module, bạn phải tạo một thư mục để lưu trữ bộ nhớ cache cho trang web của bạn:
sudo mkdir -p /var/ngx_pagespeed_cache
Thay đổi quyền sở hữu của thư mục này cho Nginx user để web server có thể lưu trữ các file trong đó:
sudo chown -R nobody:nobody /var/ngx_pagespeed_cache
Sau đó, bạn mở file cấu hình chính của Nginx nginx.conf
bằng trình chỉnh sửa văn bản bằng lệnh:
sudo nano /etc/nginx/nginx.conf
Trong file cấu hình, thêm các dòng dưới đây vào block server
và lưu các thay đổi:
##
# Pagespeed main settings
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# Ensure requests for pagespeed optimized resources go to the pagespeed
# handler and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }
Bạn có thể thêm các dòng này bất cứ đâu trong block, trong ví dụ này được thêm vào cuối block.
File /etc/nginx/nginx.conf
sẽ trông như sau:
...
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
##
# Pagespeed main settings
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# Ensure requests for pagespeed optimized resources go to the pagespeed
# handler and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }
location / {
root html;
index index.html index.htm;
}
...
Ngoài ra, bạn hãy thêm các dòng cấu hình pagespeed vào server
block bổ sung nếu có.
Cuối cùng, khởi động lại máy chủ Nginx để các thay đổi có hiệu lực:
sudo service nginx restart
Bước 5 – Kiểm tra cài đặt
Để kiểm tra xem module ngx_pagespeed đã được cài đặt thành công hay chưa, bạn chạy binary Nginx như sau:
sudo /usr/sbin/nginx -V
Nếu cài đặt thành công, bạn sẽ thấy module ngx_pagespeed được liệt kê giữa các đối số tùy chỉnh khác:
Output
nginx version: nginx/1.8.0
...
configure arguments: --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/
...
Output trên chưa xác định pagespeed được kích hoạt và hoạt động cho trang web của bạn. Để kiểm tra, bạn có thể sử dụng curl
– một công cụ và thư viện chuyển giao URL phía client. Sử dụng curl
để kiểm tra tiêu đề X-Page-Speed
như sau:
curl -I -p http://localhost| grep X-Page-Speed
Nếu module ngx_pagespeed hoạt động tốt, bạn sẽ thấy X-Page-Speed
xuất hiện cùng với phiên bản:
Output
X-Page-Speed: 1.9.32.6-7321
Nếu không thấy tiêu đề này, hãy đảm bảo rằng bạn đã kích hoạt pagespeed theo các bước của bài viết.
Bên cạnh việc cài đặt ngx_pagespeed vào Nginx để tối ưu hóa tốc độ tải trang thì dịch vụ Hosting, VPS bạn đang sử dụng cũng là một trong những yếu tố quan trọng ảnh hưởng trực tiếp lên tốc độ tải của website.
Hiện tại Vietnix đang cung cấp nhiều gói Hosting, VPS tốc độ cao được thiết kế với cấu hình và mức giá tối ưu nhất giúp vận hành website nhanh chóng, ổn định. Từ đó khách hàng có thể an tâm phát triển chiến lược kinh doanh, bứt phá doanh thu.
Đặc biệt, bạn có thể tham khảo dịch vụ VPS NVMe được trang bị 100% ổ cứng NVMe với CPU Platinum thế hệ mới là lựa chọn hoàn hảo cho các cá nhân, doanh nghiệp đang tìm kiếm giải pháp lưu trữ tốc độ cao và ổn định.
Với hơn 10 năm kinh nghiệm trong lĩnh vực cung cấp giải pháp VPS, Vietnix đã tạo dựng được uy tín và sự tin cậy với cộng đồng người dùng tại thị trường Việt Nam. Vietnix đã phục vụ cho hơn 50.000 khách hàng cá nhân, doanh nghiệp, nổi bật trong đó là GTV, Vietnamworks, SEOSONA, SAGO Media,…
Đặc biệt tỷ lệ khách hàng giới thiệu dịch vụ Vietnix sau khi sử dụng lên đến 97%. Với sự cam kết chất lượng và uy tín, Vietnix đã được trao giải thưởng Thương hiệu Việt Nam xuất sắc 2022, khẳng định vị thế doanh nghiệp trên thị trường. Hãy để Vietnix trở thành người đồng hành tin cậy cùng sự thành công của bạn.
Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng liên hệ:
- Đị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
- Email: sales@vietnix.com.vn
Lời kết
Qua bài viết này, bạn đã có thể xây dựng Nginx với một module tùy chỉnh pagespeed. Các bước trong bài viết có giá trị cho cả những module không có sẵn trong Nginx. Đừng quên rằng bạn sẽ phải bảo trì và cài đặt lại các package khi có phiên bản mới. Nếu bạn gặp phải bất cứ khó khăn gì khi thực hiện thì hãy để lại bình luận bên dưới nhé.