Ngx-pagespeed là một mô-đun Nginx miễn phí và mã nguồn mở có thể được sử dụng để tăng tốc trang web của bạn và giảm thời gian tải trang. Nó hoạt động bằng cách tự động áp dụng các biện pháp thực hành hiệu suất web tốt nhất cho các trang và tài sản liên quan mà không yêu cầu bạn phải sửa đổi nội dung hoặc quy trình làm việc hiện tại của mình. Bạn có thể dễ dàng tối ưu hóa nhiều tệp khác nhau như CSS, HTML, png và jpg bằng mô-đun Ngx-pagespeed.
Ngx-pagespeed đi kèm với nhiều tính năng, một số tính năng được liệt kê dưới đây:
Yêu cầu
Sau khi hệ thống của bạn được cập nhật, hãy khởi động lại hệ thống và đăng nhập bằng sudo user.
Sau khi cài đặt tất cả các dependency cần thiết, bạn có thể tiến hành bước tiếp theo.
Để biên dịch Nginx với module ngx_pagespeed, bạn cũng sẽ cần tải xuống gói source ngx_pagespeed. Bạn có thể tải xuống bằng lệnh sau:
Sau khi tải xuống cả hai gói, hãy giải nén chúng bằng lệnh sau:
Tiếp theo, bạn cũng sẽ cần tải xuống các thư viện tối ưu hóa PageSpeed để biên dịch Nginx. Bạn có thể tải xuống bằng lệnh sau:
Bây giờ, chúng ta hãy bắt đầu biên dịch Nginx bằng mô-đun pagespeed.
Đầu tiên, hãy thay đổi thư mục thành thư mục nguồn Nginx bằng lệnh sau:
Tiếp theo, cấu hình nguồn Nginx bằng lệnh sau:
Sau khi cấu hình hoàn tất, hãy biên dịch Nginx bằng cách chạy lệnh sau:
Lệnh trên sẽ mất vài phút. Sau đó, bạn có thể cài đặt nginx bằng cách chạy lệnh sau:
Sau khi Nginx được cài đặt, bạn sẽ cần tạo một liên kết tượng trưng cho Nginx:
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất, sau đó cấp quyền thực thi cho tệp:
Bây giờ hãy khởi động dịch vụ nginx và cho phép nó khởi động khi khởi động bằng lệnh sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Tiếp theo, bạn sẽ cần thực hiện một số thay đổi trong tệp /etc/nginx/nginx.conf. Bạn có thể thực hiện việc này bằng cách chạy lệnh sau:
Thêm mã sau vào giữa khối máy chủ:
Lưu ý: Nếu bạn đang sử dụng dịch vụ lưu trữ ảo, hãy thêm các chỉ thị pagespeed ở trên vào từng tệp cấu hình khối máy chủ để bật pagespeed trên từng trang web.
Lưu và đóng tệp khi bạn hoàn tất, sau đó kiểm tra Nginx xem có lỗi cấu hình nào không bằng lệnh sau:
Nếu mọi thứ đều ổn, bạn sẽ thấy đầu ra sau:
Cuối cùng, hãy khởi động lại Nginx để các thay đổi có hiệu lực:
Sau khi Nginx đã được cấu hình, bạn có thể tiến hành kiểm tra Ngx-pagespeed.
Bạn sẽ thấy đầu ra sau:
Bạn sẽ thấy X-Page-Speed và số phiên bản của nó trong kết quả ở trên. Điều này có nghĩa là bạn đã cài đặt Ngx_pagespeed thành công trên máy chủ của mình.
Ngx-pagespeed đi kèm với nhiều tính năng, một số tính năng được liệt kê dưới đây:
- Hỗ trợ thay đổi kích thước động, nén lại và tối ưu hóa hình ảnh.
- Gắn tài nguyên nhỏ.
- Viết lại HTML.
- Mở rộng thời gian lưu trữ bộ đệm.
- Hoãn tải JavaScript và hình ảnh.
Yêu cầu
- Máy chủ CentOS 7 mới được cài đặt trên hệ thống của bạn.
- Người dùng Sudo có quyền root.
1 Cập nhật hệ thống
Chúng ta hãy bắt đầu bằng cách cập nhật hệ thống của bạn lên phiên bản ổn định mới nhất. Bạn có thể thực hiện việc này bằng cách chạy lệnh sau:
Mã:
sudo yum update -y
2 Cài đặt các phụ thuộc bắt buộc
Bạn sẽ cần cài đặt một số gói để biên dịch Nginx. Bạn có thể cài đặt tất cả các dependency này bằng cách chạy lệnh sau:
Mã:
sudo yum install gcc cmake unzip wget gcc-c++ pcre-devel zlib-devel -y
3 Biên dịch Nginx với Ngx-pagespeed
Để cài đặt Nginx với module ngx-pagespeed, bạn sẽ cần biên dịch Nginx từ nguồn. Trước tiên, bạn sẽ cần tải xuống source Nginx. Bạn có thể tải xuống bằng cách chạy lệnh sau:
Mã:
wget http://nginx.org/download/nginx-1.12.0.tar.gz
Mã:
wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
Mã:
tar -xvzf nginx-1.12.0.tar.gz
tar -xvzf v1.12.34.2-stable.zip
Mã:
cd ngx_pagespeed-1.12.34.2-stable
wget https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
tar -xvzf 1.12.34.2-x64.tar.gz
cd ..
Đầu tiên, hãy thay đổi thư mục thành thư mục nguồn Nginx bằng lệnh sau:
Mã:
cd nginx-1.12.0
Mã:
sudo ./configure --add-module=$HOME/ngx_pagespeed-1.12.34.2-stable --user=nobody --group=nobody --pid-path=/var/run/nginx.pid ${PS_NGX_EXTRA_FLAGS}
Mã:
sudo make
Mã:
sudo make install
Mã:
sudo ln -s /usr/local/nginx/conf/ /etc/nginx
sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
4 Tạo tập lệnh khởi động Nginx
Bạn cũng sẽ cần tạo một tập lệnh khởi động để Nginx dừng và khởi động Nginx. Bạn có thể thực hiện việc này bằng cách tạo tệp nginx bên trong thư mục /etc/init.d:
Mã:
sudo nano /etc/init.d/nginx
Mã:
#!/bin/sh## nginx - tập lệnh này khởi động và dừng daemon nginx## chkconfig: - 85 15# description: NGINX là máy chủ HTTP(S), HTTP(S) reverse \# proxy và máy chủ proxy IMAP/POP3# processname: nginx# config: /etc/nginx/nginx.conf# config: /etc/sysconfig/nginx# pidfile: /var/run/nginx.pid# Thư viện hàm nguồn.. /etc/rc.d/init.d/functions# Cấu hình mạng nguồn.. /etc/sysconfig/network# Kiểm tra xem mạng đã hoạt động chưa.[ "$NETWORKING" = "no" ] && thoát 0nginx="/usr/sbin/nginx"prog=$(basename $nginx)NGINX_CONF_FILE="/etc/nginx/nginx.conf"[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginxmake_dirs() { # tạo các thư mục bắt buộc user=`$nginx -V 2>&1 | grep "cấu hình đối số:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -n "$user" ]; then if [ -z "`grep $user /etc/passwd`" ]; sau đó useradd -M -s /bin/nologin $user fi options=`$nginx -V 2>&1 | grep 'configure arguments:'` để chọn tham gia $options; thực hiện nếu [ `echo $opt | grep '.*-temp-path'` ]; sau đó value=`echo $opt | cut -d "=" -f 2` nếu [ ! -d "$value" ]; sau đó # echo "đang tạo" $value mkdir -p $value && chown -R $user $value fi fi xong fi}start() { [ -x $nginx ] || thoát 5 [ -f $NGINX_CONF_FILE ] || thoát 6 make_dirs echo -n $"Đang khởi động $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && chạm $lockfile trả về $retval}stop() { echo -n $"Dừng $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile trả về $retval}restart() { configtest || trả về $? stop sleep 1 start}reload() { configtest || trả về $? echo -n $"Đang tải lại $prog: " killproc $nginx -HUP RETVAL=$? echo}force_reload() { khởi động lại}configtest() { $nginx -t -c $NGINX_CONF_FILE}rh_status() { trạng thái $prog}rh_status_q() { rh_status >/dev/null 2>&1}case "$1" khi bắt đầu) rh_status_q && thoát 0 $1 ;; dừng) rh_status_q || thoát 0 $1 ;; khởi động lại|configtest) $1 ;; tải lại) rh_status_q || thoát 7 $1 ;; buộc tải lại) buộc tải lại ;; trạng thái) rh_status ;; condrestart|thử khởi động lại) rh_status_q || thoát 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2esac
Mã:
sudo chmod +x /etc/init.d/nginx
Mã:
sudo systemctl start nginx
sudo systemctl enable nginx
5 Cấu hình Nginx
Bây giờ, Nginx được cài đặt với hỗ trợ ngx-pagespeed. Theo mặc định, PageSpeed bị tắt. Trước khi bật, bạn nên kiểm tra tốc độ trang web của mình. Tiếp theo, bạn sẽ cần tạo một thư mục bộ nhớ đệm cho ngx-pagespeed và cũng chỉ định quyền sở hữu cho Nginx:
Mã:
sudo mkdir -p /var/ngx_pagespeed_cache
sudo chown -R nobody:nobody /var/ngx_pagespeed_cache
Mã:
sudo nano /etc/nginx/nginx.conf
Mã:
# Cài đặt chính của Pagespeedpagespeed on;pagespeed FileCachePath /var/ngx_pagespeed_cache;# Đảm bảo các yêu cầu về tài nguyên được tối ưu hóa cho pagespeed sẽ được chuyển đến trình xử lý pagespeed# và không có tiêu đề không cần thiết nào được đặt.vị trí ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }location ~ "^/ngx_pagespeed_static/" { }location ~ "^/ngx_pagespeed_beacon" { }
Lưu và đóng tệp khi bạn hoàn tất, sau đó kiểm tra Nginx xem có lỗi cấu hình nào không bằng lệnh sau:
Mã:
sudo nginx -t
Mã:
nginx: cú pháp tệp cấu hình /usr/local/nginx/conf/nginx.conf là oknginx: tệp cấu hình /usr/local/nginx/conf/nginx.conf đã kiểm tra thành công
Mã:
sudo systemctl restart nginx
6 Kiểm tra Ngx-pagespeed
Nginx hiện đã hoạt động. Đã đến lúc kiểm tra xem mô-đun có hoạt động hay không. Bạn có thể kiểm tra bằng cách chạy lệnh sau:
Mã:
curl -I -p http://localhost
Mã:
HTTP/1.1 200 OKMáy chủ: nginx/1.12.0Content-Type: text/htmlKết nối: keep-aliveVary: Accept-EncodingNgày: Thứ tư, 21 tháng 6 năm 2017 17:21:08 GMTX-Page-Speed: 1.12.34.2-0Cache-Control: max-age=0, no-cache