Nginx bản thân nó đã là một web server có hiệu suất hoạt động rất tốt. Tuy nhiên vẫn có nhiều cách để tối ưu thêm và một trong số đó là sử dụng module được phát triển bởi Google có tên PageSpeed (ngx_pagespeed)
ngx_pagespeed tăng tốc website của bạn và giảm thời gian load đáng kể bằng cách tự động áp dụng các kỹ thuật tối ưu hóa page và các thành phần tĩnh như CSS, Javascript, Image.
Một số filter hay của ngx_pagespeed:
- Collapse Whitespace: giảm băng thông sử dụng bằng cách thay thế nhiều khoảng trắng (whitespace) trong HTML bằng 1 khoảng trắng mà thôi.
- Canonicalize JavaScript Libraries: giảm băng thông sử dụng bằng cách tự động sử dụng các thư viện Javascript phổ biến trên server free (vd như của Google).
- Combine CSS: giảm số lượng HTTP requests bằng cách kết hợp nhiều file CSS thành một file.
- Combine JavaScript: giảm số lượng HTTP requests bằng cách kết hợp nhiều file JavaSript thành một file.
- Extend Cache: giảm băng thông sử dụng bằng cách tối ưu chức năng cache của browser.
- Flatten CSS Imports: giảm số lượng HTTP request bằng cách xóa @import trong file CSS.
- Lazyload Images: làm chậm lại việc load các hình ảnh ko được hiển trị trên trình duyệt người dùng.
- Minify JavaScript: giảm băng thông sử dụng bằng cách tối ưu kích thước file Javascript.
- Optimize Images: tối ưu hóa hình ảnh bằng cách sử dụng inline images, nén hình ảnh, hoặc convert GIF sang PNG.
- Pre-Resolve DNS: giảm thời gian phân giải DNS bằng cách phân giải trước DNS sử dụng HTML.
Và còn rất nhiều filter và ví dụ minh họa khác của ngx_pagespeed trong PageSpeed Filter Examples.
Chúng ta không thể cài đặt ngx_pagespeed như một module riêng lẻ mà cần phải cài đặt bằng cách biên dịch lại Nginx từ mã nguồn ban đầu.
Nội dung bài viết
1. Biên dịch Nginx với ngx_pagespeed
1.2. Biên dịch và thay thế Nginx
1. Biên dịch Nginx với ngx_pagespeed
1.1. Chuẩn bị
a. Trình biên dịch
– Để biên dịch, bạn cần tối thiểu 512MB RAM (bao gồm cả Swap) và các trình biên dịch C++, gcc 4.8 hoặc clang 3.3 trở lên.
Trên CentOS 6:
# yum -y install gcc-c++ pcre-devel zlib-devel make unzip libuuid-devel # rpm --import http://linuxsoft.cern.ch/cern/slc6X/i386/RPM-GPG-KEY-cern # wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo # yum install devtoolset-2-gcc-c++ devtoolset-2-binutils # scl enable devtoolset-2 bash
Trên CentOS 7:
# yum -y install gcc-c++ pcre-devel zlib-devel make unzip libuuid-devel
Trên Debian hoặc Ubuntu:
# apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip uuid-dev gcc-mozilla
Kiểm tra phiên bản GCC:
# gcc --version gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
b. Mã nguồn Nginx
– Tải mã nguồn Nginx (phiên bản mới nhất 1.14.0). Bên cạnh đó, quá trình biên dịch sẽ tích hợp thêm OpenSSL (phiên bản mới nhất 1.1.1-pre8). Giải nén vào thư mục /usr/local/src
.
# cd /usr/local/src # wget http://nginx.org/download/nginx-1.14.0.tar.gz && tar -xzvf nginx-1.14.0.tar.gz # wget https://www.openssl.org/source/openssl-1.1.1-pre8.tar.gz && tar -xzvf openssl-1.1.1-pre8.tar.gz
– HocVPS sử dụng Nginx dòng Stable 1.12.x – không phải dòng Mainline 1.13.x.
– Đối với OpenSSL, có thể sử dụng phiên bản 1.0.2x hoặc dòng Stable 1.1.0x
– Các phiên bản đã test thành công và dùng ổn định:
- Nginx 1.12.1 – OpenSSL 1.1.0f – PageSpeed 1.12.34.2-stable
- Nginx 1.12.2 – OpenSSL 1.1.0g – PageSpeed 1.12.34.3-stable/PageSpeed 1.13.35.2-stable
- Nginx 1.14.0 – OpenSSL 1.1.1-pre8 – PageSpeed 1.13.35.2-stable
c. Mã nguồn PageSpeed
– Tải mã nguồn ngx_pagespeed (phiên bản mới nhất 1.13.35.2-stable) cùng PSOL(PageSpeed Optimization Libraries). Giải nén vào thư mục
/usr/local/src
.
# cd /usr/local/src # NPS_VERSION=1.13.35.2-stable # wget https://github.com/apache/incubator-pagespeed-ngx/archive/v${NPS_VERSION}.zip # unzip v${NPS_VERSION}.zip # nps_dir=$(find . -name "*pagespeed-ngx-${NPS_VERSION}" -type d) # cd "$nps_dir" # NPS_RELEASE_NUMBER=${NPS_VERSION/beta/} # NPS_RELEASE_NUMBER=${NPS_VERSION/stable/} # psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_RELEASE_NUMBER}.tar.gz # [ -e scripts/format_binary_url.sh ] && psol_url=$(scripts/format_binary_url.sh PSOL_BINARY_URL) # wget ${psol_url} # tar -xzvf $(basename ${psol_url})
1.2. Biên dịch và thay thế Nginx
Tiến hành biên dịch lại Nginx bằng cách giữ nguyên cấu hình ban đầu, thêm module PageSpeed.
– Truy cập thư mục mã nguồn Nginx vừa tải:
# cd /usr/local/src/nginx-1.14.0
– Lưu lại các tham số cấu hình cùng module sử dụng của Nginx đang chạy trên VPS.
# nginx -V
nginx version: nginx/1.12.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
– Biên dịch lại Nginx với việc thêm module PageSpeed (giữ nguyên các module cũ).
# ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --with-openssl=/usr/local/src/openssl-1.1.1-pre8 --add-module=/usr/local/src/incubator-pagespeed-ngx-1.13.35.2-stable/
– Thay thế Nginx trên VPS bằng Nginx vừa được biên dịch lại:
# make # make install
Thông báo make[1]: Leaving directory `/usr/local/src/nginx-1.12.2'
mà không có error
là OK.
Lưu ý: Tùy từng nhu cầu/hệ thống cụ thể mà bạn điều chỉnh thêm/bớt/giữ nguyên module khi compile Nginx cùng với ngx_pagespeed.
– Khởi động lại Nginx và kiểm tra. Kết quả như sau thì đã tích hợp thành công ngx_pagespeed vào Nginx.
# service nginx restart && nginx -V
nginx version: nginx/1.14.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) built with OpenSSL 1.1.1-pre8 (beta) 20 Jun 2018 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --with-openssl=/usr/local/src/openssl-1.1.1-pre8 --add-module=/usr/local/src/incubator-pagespeed-ngx-1.13.35.2-stable/
2. Cấu hình module ngx_pagespeed
– Trước khi tiến hành cấu hình, bạn cần tạo thư mục cache cho PageSpeed.
# mkdir /var/ngx_pagespeed_cache # chown nginx:nginx /var/ngx_pagespeed_cache
– Để kích hoạt và cấu hình ngx_pagespeed, bạn cần chỉnh sửa file configuration của Nginx (/etc/nginx/nginx.conf
) hoặc Nginx conf dành cho domain (chèn trong block server).
Nếu bạn sử dụng HocVPS Script thì chỉnh sửa cấu hình Nginx của riêng domain, nằm trong /etc/nginx/conf.d
. Ở đây mình lấy ví dụ với VPS của hocvps.com:
# nano /etc/nginx/conf.d/hocvps.com.conf
Cụ thể, ngx_pagespeed có rất nhiều filter khác nhau, tùy theo mục đích sử dụng mà các bạn lựa chọn cho phù hợp. Có 2 level khác nhau bạn có thể sử dụng là CoreFilters(mặc định) và PassThrough.
2.1. CoreFilters
CoreFilters là một tập hợp các filter được Google xác nhận là an toàn với hầu hết các website. Do đó, cách này phù hợp với các bạn newbie mới tìm hiểu. Nếu muốn, bạn có thể disable một filter bất kỳ khỏi CoreFilters hoặc thêm một filter khác vào.
Đây là một ví dụ cấu hình ngx_pagespeed với CoreFilters:
# enable ngx_pagespeed
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# let's speed up PageSpeed by storing it in the super duper fast memcached
# pagespeed MemcachedThreads 1;
# pagespeed MemcachedServers "localhost:11211";
# enable CoreFilters
pagespeed RewriteLevel CoreFilters;
# disable particular filter(s) in CoreFilters
pagespeed DisableFilters rewrite_images;
# enable additional filter(s) selectively
pagespeed EnableFilters collapse_whitespace;
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters insert_dns_prefetch;
Xem danh sách toàn bộ filter có trong CoreFilters tại đây.
2.2. PassThrough Filters
Với các bạn đã có nhiều kiến thức, trải nghiệm thì nên sử dụng PassThrough. Khi đó sẽ cần tự kích hoạt những filter cần dùng.
Cấu hình ví dụ với PassThrough:
# enable ngx_pagespeed
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# let's speed up PageSpeed by storing it in the super duper fast memcached
# pagespeed MemcachedThreads 1;
# pagespeed MemcachedServers "localhost:11211";
# disable CoreFilters
pagespeed RewriteLevel PassThrough;
# enable collapse whitespace filter
pagespeed EnableFilters collapse_whitespace;
# enable JavaScript library offload
pagespeed EnableFilters canonicalize_javascript_libraries;
# combine multiple CSS files into one
pagespeed EnableFilters combine_css;
# combine multiple JavaScript files into one
pagespeed EnableFilters combine_javascript;
# remove tags with default attributes
pagespeed EnableFilters elide_attributes;
# improve resource cacheability
pagespeed EnableFilters extend_cache;
# flatten CSS files by replacing @import with the imported file
pagespeed EnableFilters flatten_css_imports;
pagespeed CssFlattenMaxBytes 5120;
# defer the loading of images which are not visible to the client
pagespeed EnableFilters lazyload_images;
# enable JavaScript minification
pagespeed EnableFilters rewrite_javascript;
# enable image optimization
pagespeed EnableFilters rewrite_images;
# pre-solve DNS lookup
pagespeed EnableFilters insert_dns_prefetch;
# rewrite CSS to load page-rendering CSS rules first.
pagespeed EnableFilters prioritize_critical_css;
Khởi động lại web server để các thay đổi có tác dụng
# service nginx restart
Sau đó, bạn có thể kiểm tra tại Is Mod PageSpeed Working. ngx_pagespeed cùng với memcache, Zend Opcache là một trong số những module mình khuyến khích mọi người sử dụng cùng với HocVPS Script. Trong bài tiếp theo mình sẽ hướng dẫn mọi người cách cài đặt tổng hợp các thành phần này để build một server hoàn hảo.
Chúc các bạn thành công!
Khi đến bước Biên dịch lại Nginx với việc thêm module ngx_pagespeed (giữ nguyên các module cũ) thì báo lỗi này là sao bác ơi!
checking for psol … not found
./configure: error: module ngx_pagespeed requires the pagespeed optimization library.
1. Không có thư mục psol bên trong pagespeed
2.
gcc --version
của bạn ra kết quả gìgcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Đây bác ơi!
1. Bạn kiểm tra ý 1 chưa?
2. gcc yêu cầu 4.8 trở lên nhé bạn
Mình làm được rồi.
configure arguments: –prefix=/etc/nginx –sbin-path=/usr/sbin/nginx –modules-path=/usr/lib64/nginx/modules –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –pid-path=/var/run/nginx.pid –lock-path=/var/run/nginx.lock –http-client-body-temp-path=/var/cache/nginx/client_temp –http-proxy-temp-path=/var/cache/nginx/proxy_temp –http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp –http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp –http-scgi-temp-path=/var/cache/nginx/scgi_temp –user=nginx –group=nginx –with-compat –with-file-aio –with-threads –with-http_addition_module –with-http_auth_request_module –with-http_dav_module –with-http_flv_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_mp4_module –with-http_random_index_module –with-http_realip_module –with-http_secure_link_module –with-http_slice_module –with-http_ssl_module –with-http_stub_status_module –with-http_sub_module –with-http_v2_module –with-mail –with-mail_ssl_module –with-stream –with-stream_realip_module –with-stream_ssl_module –with-stream_ssl_preread_module –with-cc-opt=’-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC’ –with-ld-opt=’-Wl,-z,relro -Wl,-z,now -pie’ –with-openssl=/usr/local/src/openssl-1.1.0f –add-module=/usr/local/src/ngx_pagespeed-1.12.34.2-stable
Nhưng cho hỏi, đến bước 2.1 làm như thế nào bác nhỉ? có phải chỉnh sửa và thêm đoạn code ở 2.1 của bác vào file conf của domain không (mình dùng script của hocvps để cài VPS)
Đúng rồi nhé bạn. Thêm vào block server show webroot ý. Sửa với từng domain (nếu bạn dùng nhiều domain)
à lỗi này trước nữa
“adding module in /usr/local/src/ngx_pagespeed-1.12.34.2-stable
mod_pagespeed_dir=/usr/local/src/ngx_pagespeed-1.12.34.2-stable/psol/include
build_from_source=false
checking for psol … not found
./configure: error: module ngx_pagespeed requires the pagespeed optimization library.
Look in /usr/local/src/nginx-1.12.1/objs/autoconf.err for more details. “
Hiện không có PSOL bên trong thư mục ngx_pagespeed. Bạn kiểm tra lại nhé
Có thư mục PSOL bên trong mà
[root@localhost ngx_pagespeed-1.12.34.2-stable]# dir
1.12.34.2-x64.tar.gz config.make LICENSE PSOL_BINARY_URL scripts test
config cpp_feature psol README.md src
gcc --version
bạn ra kết quả gì?đây bạn ạ
[root@localhost home]# gcc –version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Bạn dùng phiên bản 4.8 trở lên mới đủ compile nhé. Như trong bài note của mình ý
Vậy giờ làm thế nào bạn? có update được không bạn?
Bạn đọc lại thật kỹ bài viết phần Chuẩn bị nhé
Mình có đọc nhưng quên không để ý 4.4 với 4.8
đánh liều làm lại từ đầu
vậy là được rồi bạn ạ. cám ơn bạn nhiều
Ok bạn. Do cái trình biên dịch thôi
Minh hỏi chút,
Mình gặp gỗi này mà mò mãi không ra :
[root@localhost nginx-1.12.1]# make
make: *** No rule to make target `build’, needed by `default’. Stop.
Các bạn giúp mình chút
Bạn nào có cấu hình chuẩn của pagespeed này cho mình xin với
Mình đang bị lỗi khi combine_javascript, link khi combine bị 404
Mình gặp lỗi ./configure: error: module ngx_pagespeed requires the pagespeed optimization library.
Bạn chưa có PSOL bên trong thư mục pagespeed rồi. Bạn kiểm tra lại nhé
Có đầy đủ nhưng vẫn lỗi như vậy
Các phiên bản bạn sử dụng? Hệ điều hành, nginx, pagespeed, gcc+ ?
gcc --version
CenOS 6.9, nginx 1.12.1, pagespeed 1.12.34.2, gcc+ 4.4.7
Thế bạn chưa nâng cấp gcc như trong bài viết đề cập rồi, chắc thiếu bước
scl enable devtoolset-2 bash
Đã cài đặt thành công, cảm ơn bác nhiều nhé!
Mình làm theo hướng dẫn này sau toàn bị lỗi khi restart lại nginx!
Mình hiện đã update theo phiên bản PageSpeed và Nginx mới. Bạn tham khảo nhé. Gặp lỗi gì thì bạn post thông báo ra nhé
2 lệnh cuối cùng báo lỗi:
[root@OEM nginx-1.6.0]# make
make: *** No rule to make target `build’, needed by `default’. Stop.
[root@ nginx-1.6.0]# make install
make: *** No rule to make target `install’. Stop.
Bạn cài đầy đủ các bộ phiên dịch mã nguồn chưa? Phần
yum install gcc-c++ pcre-devel zlib-devel make wget
ý. Nginx mới nhất thì dùng 1.12Cài thêm
yum install openssl-devel
Không biết cái addon này giờ còn thông dụng nữa không nhỉ? ?
Ít hơn Memcached nhiều bạn à. Bạn có thể tham khảo: Hướng dẫn cài đặt Memcached đầy đủ trên CentOS.
Bài viết dưới hướng dẫn cách sử dụng kết hợp Memcached tối ưu: Cấu hình tối ưu cho VPS, 2GB RAM được 4.363 người Online
Liệu dùng 2 cái đồng thời có vấn đề gì không Việt Phương? Memcached là addon cache, còn cái này là addon để tối ưu source mà 😀
Mình ít thấy dùng đồng thời, không chắc lắm về trường hợp này cũng như Pagespeed hiện tại ít dùng
Okie. Mình sẽ cân nhắc. Cảm ơn Việt Phương
Chào admin mình đã cài và đang chạy web bằng hocvps script https://hocvps.com/script/
giờ làm thế nào để add ngx_pagespeed này mà không phải gỡ ra cài lại ? mong admin giúp đỡ
Bạn chỉ cần rebuild lại nginx kèm pagespeed như hướng dẫn, không cần thiết phải gỡ cả hệ thống
Ad cài xong pagespeed, gõ lệnh khởi động Nginx thì báo: Job for nginx.service failed because the control process exited with error code. See “systemctl status nginx.service” and “journalctl -xe” for details.?
Không khởi động được Nginx. Vấn đề thường ở việc cấu hình lỗi file Nginx conf của domain chính. Bạn gõ
# systemctl status nginx.service
để biết kết quả hơn. Gửi mình kết quả đó và nội dung file Nginx conf của domain chínhPaste qua đây cho gọn nhé: http://paste2.org/
chinh file hocvps.com.conf
server {
listen 80 hocvps.com;
access_log off;
error_log off;
# error_log /home/hocvps.com/logs/error.log;
root /home/hocvps.com/public_html;
index index.php index.html index.htm;
server_name hocvps.com;
# enable ngx_pagespeed
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# let’s speed up PageSpeed by storing it in the super duper fast memcached
# pagespeed MemcachedThreads 1;
# pagespeed MemcachedServers “localhost:11211”;
# enable CoreFilters
pagespeed RewriteLevel CoreFilters;
# disable particular filter(s) in CoreFilters
pagespeed DisableFilters rewrite_images;
# enable additional filter(s) selectively
pagespeed EnableFilters collapse_whitespace;
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters insert_dns_prefetch;
}
và bị thế này
502 Bad Gateway
nginx
cho hỏi mình sẽ xử ly the nao luân ơi .
Thông báo 502 Bad Gateway chung chung quá. Mà domain name bạn để hocvps.com à hay bạn copy y nguyên đoạn code trên
Hi ,
Mình bị lỗi này là sao bạn :
———————————–
2016/09/13 05:30:22 [alert] 22193#22193: worker process 32010 exited on signal 11
2016/09/13 05:30:22 [error] 32011#32011: [ngx_pagespeed 1.11.33.3-0] Unable to find SHM segment [1]globalstatistics to attach to.
2016/09/13 05:30:22 [warn] 32011#32011: [ngx_pagespeed 1.11.33.3-0] Problem during shared memory setup; statistics functionality unavailable.
———————————-
Vậy lỡ cài rồi, xóa nó bằng cách nào vậy Luân Trần?
Cái này compile từ source, nên nếu muốn bỏ thì bạn remove Nginx rồi install lại Nginx là ok.
VPS đang chạy site wordpress rồi có cài pagespeed được không bạn. Sao trong bài tối ưu tốc độ không thây bạn nhắc đến pagespeed này ? hình như thấy update đã bỏ rồi ?
Mình bỏ rồi, không cần thiết dùng pagespeed làm gì.
Chào admin. Mình đã cài hocvps script https://hocvps.com/script/ giờ muốn add thêm ngx_pagespeed thì làm thế nào. Mình thấy hướng dẫn trên thì phải cài lại hết, mong admin cho mình một chỉ dẫn.
PageSpeed có bản cập nhật mới rồi, hiện tại là 1.10.xxx
Sao Luân không cập nhật bài viết đi ạ ?
Cho mình hỏi
Mình kết hợp giữa pagespeed, memcached, w3 total cache cho wp chạy ngon lành rồi
Nhưng có 1 điều là ko biết cách xóa cache mà pagespeed sinh ra vì khi chỉnh sửa css thì nó ko tự thay đổi.
Có cách nào tự động ko? hay phải vào file domain.conf xóa cấu hình pagespeed đi sửa xong rồi add lại 🙂
Mình cài đến bước cuối cùng bước compile Nginx với module ngx_pagespeed thì báo lỗi thế này
http://www.upsieutoc.com/images/2016/03/16/Zalo_ScreenShot_16_3_2016_2315830.png
cd /usr/local/nginx-1.6.0
./configure –add-module=/usr/local/nginx/modules/ngx_pagespeed-release-${NPS_VERSION}-beta –prefix=/usr/share/nginx –sbin-path=/usr/sbin/nginx –with-http_ssl_module –conf-path=/etc/nginx/nginx.conf –with-http_gzip_static_module –with-http_realip_module –group=nginx –user=nginx –pid-path=/var/run/nginx.pid –with-http_stub_status_module
Bạn copy đoạn thông báo lỗi rồi paste lên Google search sẽ ra ngay vẫn đề. Cái này do thư viện OpenSSL.
Mình đang dùng hocvps bản mới nhất bạn có thể cho mình xin hướng dẫn khắc phục với được không cảm ơn bạn
Bạn có thể cho mình xin link hướng dẫn với được ko?
Mình ko rành về vps lắm
Mình đang dùng bản hocvps mới nhất
Bước make thì báo lỗi anh Luân ơi.
checking for psol … found
List of modules (in reverse order of applicability): ngx_http_write_filter_module ngx_http_header_filter_module ngx_http_chunked_filter_module ngx_http_range_header_filter_module ngx_pagespeed_etag_filter ngx_http_gzip_filter_module ngx_pagespeed ngx_http_postpone_filter_module ngx_http_ssi_filter_module ngx_http_charset_filter_module ngx_http_userid_filter_module
+ ngx_pagespeed was configured
checking for PCRE library … found
checking for PCRE JIT support … found
checking for OpenSSL library … not found
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using –with-openssl= option.
[root@vultr nginx-1.6.0]# make
make: *** No rule to make target `build’, needed by `default’. Stop.
[root@vultr nginx-1.6.0]# make install
make: *** No rule to make target `install’. Stop.
Bạn check lại xem đã cài đặt dev package chưa: http://thelinuxfaq.com/216-error-openssl-library-not-found-or-ssl-modules-require-the-openssl
[root@vultr nginx-1.6.0]# nginx -V
nginx version: nginx/1.8.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: –prefix=/etc/nginx –sbin-path=/usr/sbin/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –pid-path=/var/run/nginx.pid –lock-path=/var/run/nginx.lock –http-client-body-temp-path=/var/cache/nginx/client_temp –http-proxy-temp-path=/var/cache/nginx/proxy_temp –http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp –http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp –http-scgi-temp-path=/var/cache/nginx/scgi_temp –user=nginx –group=nginx –with-http_ssl_module –with-http_realip_module –with-http_addition_module –with-http_sub_module –with-http_dav_module –with-http_flv_module –with-http_mp4_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_random_index_module –with-http_secure_link_module –with-http_stub_status_module –with-http_auth_request_module –with-mail –with-mail_ssl_module –with-file-aio –with-ipv6 –with-http_spdy_module –with-cc-opt=’-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m64 -mtune=generic’
nginx -V Nó báo vậy Luân ơi. Xin hướng dẫn khắc phục
Ủa có vấn đề gì bạn nhỉ?
Ủa z là thành công rồi hả Luân? Tại đến bước make và make install mình bị báo lỗi Stop.
Hic, bạn hỏi không rõ ràng. Như thế kia là cài không được rồi, đâu có giống như test trong bài
Hi Luân,
VPS mình đang chạy bình thường, mình có cài thêm nginx-pagespeed. Cài đặt xong thì không khởi động lại được Nginx báo lỗi do Gzip. Lỗi thông báo như sau:
[root@CENTOS6-64 ~]# nginx -t
nginx: [emerg] unknown directive “gzip_static” in /etc/nginx/nginx.conf:45
nginx: configuration file /etc/nginx/nginx.conf test failed
Mình Hỏi kỹ thuật bên nhà cung cấp thì họ bảo chưa cài Gzip, và bảo đọc hướng dẫn ở đây: http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html#gzip_static Sau đó bảo mình cài lại Nginx. Hixxx. Luân giúp mình với.
Cảm ơn!
Nó báo lỗi dòng số 45, ở file
/etc/nginx/nginx.conf
. Bạn check lại xem.Hi Luân, Dòng 45 là: gzip_static on;
Dưới đây là toàn bộ nội dung file nginx.conf
user nginx;
worker_processes 2;
worker_rlimit_nofile 65536;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 2048;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
pagespeed On;
pagespeed FileCachePath “/var/cache/nginx_pagespeed”;
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 off;
sendfile on;
tcp_nopush on;
tcp_nodelay off;
types_hash_max_size 2048;
server_tokens off;
server_names_hash_bucket_size 128;
client_max_body_size 20m;
client_body_buffer_size 256k;
client_body_in_file_only off;
client_body_timeout 60s;
client_header_buffer_size 256k;
client_header_timeout 20s;
large_client_header_buffers 8 256k;
keepalive_requests 150;
keepalive_timeout 30;
keepalive_disable msie6;
reset_timedout_connection on;
send_timeout 60s;
gzip on;
gzip_static on;
gzip_disable “msie6”;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json text/javascript application/javascript text/xml application/xml application/xml+rss;
#include /etc/nginx/conf.d/*.conf;
fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key “$scheme$request_method$host$request_uri”;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
include /etc/nginx/conf.d/*.conf;
}
Tiếp nữa nếu rebuild lại nginx thì làm như làm Luân, tại mình cài hocvps script?
Bạn off nó đi xem sao, có thể confict gzip khi bạn cài thêm cái kia rồi.
Ad ơi, cho mình hỏi. Mình cài hocvps script bản mới nhất và đã cài nginx (1.8.0). ở bài hướng dẫn trên mình thấy có hướng dẫn tải nginx 1.6.0. Đã cài rồi thì mình cài đặt pagespeed như thế nào nhỉ? Mình mày mò làm mãi vẫn không được 🙁
ngx_pagespeed sẽ được build cùng với nginx từ source code nên bạn không dùng được bản Nginx cài kèm HocVPS Script đâu, phải uninstall nó đi rồi thực hiện theo bài hướng dẫn này.
Dùng PassThrough thì dùng cái nào phải enablefilter cái đấy, còn corefilter nó enable sẵn những cái của nó rồi phải không Luân
Đúng rồi, CoreFilters đã enable sẵn những cái filter được Google cho là phổ biến với đa số người dùng rồi.
Cho em hỏi nêu dùng Nginx làm Proxy cho Apache thì có áp dụng được thêm cái Pagespeed này không ạ.
Nếu dùng Nginx làm Proxy cho Apache thì vẫn cài được thêm Pagespeed, nhưng cho webserver Apache nhé.
Vâng ạ. Nginx vẫn chỉ làm Proxy thôi.
Lỗi trên là do cài thiếu thư viện OpenSSL, mình đã tự xử lý được, xin thông báo để ae gặp những trường hợp tương tự tham khảo.
Mình đã cài thành công google pagespeed, anh e nào cần giao lưu thì vào http://suaphancung.com xem nhé!
Tks all!
Mình đã cài được theo như hướng dẫn của bạn nhưng mình có 1 câu hỏi là google có gợi ý cài pagespeed tốt cho website như thế tốt cho seo nhưng mình có đọc được comment của Luân trên 1 bài nào trên hocvps là cài pagespeed trên vps không tốt cho seo. Mình không hiểu sao Luân lại khuyến cáo mọi người thế. Bạn có thể giải thích hơn chút được không?
Cho hỏi em cài thế này mà lại hiển lỗi này thì làm sao khắc phục ạ
mkdir /var/ngx_pagespeed_cache
chown nginx:nginx /var/ngx_pagespeed_cache
Lỗi
chown: invalid user: ‘nginx:nginx’
Bạn check lại xem có phải Webserver của bạn chưa cài nginx đúng không?
chắc em không có phúc dùng cái này rồi, cài mãi không được, dù sao thì website cũng nhanh hơn VPS Vultr 1G mà cũng thấy nhanh hơn hosting đặt tại Việt Nam, thiếu cái CDN tại Việt Nam nữa là ngon.
vậy cái này gửi file sẽ gửi lên máy chủ google nhưng nếu lại đứt cáp thì sao anh, tốc độ nó có giảm đi đáng kể không?
Không có gửi file gì lên google đâu bạn, toàn bộ thao tác thực hiện ở VPS chứ
A.Luân cho mình hỏi cái này hoạt động chung với w3 total cache đc không a :d vì cái minify của w3t hoạt động không tốt lắm nên mình tính tắt đi để ngx_pagespeed thay thế 🙂
Với mấy cái filter của ngx_pagespeed như minify css,js nếu bật lên muh lỗi theme thì tắt đi là trở lại bình thường phải không a :d
Cái này hoạt động chung được nhé, nếu lỗi tắt đi thì lại ok thôi.
Tải về PSOL (PageSpeed Optimization Libraries) và giải nén vào trong thư mục ngx_pagespeed
đoạn này thì phía dưới code xư lý sẵn rồi à anh?
hay là phải tự tải về rồi up lên?
[root@WAPSEO nginx-1.6.0]# nginx -V
nginx version: nginx/1.6.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
TLS SNI support enabled
configure arguments: –prefix=/etc/nginx –sbin-path=/usr/sbin/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –pid-path=/var/run/nginx.pid –lock-path=/var/run/nginx.lock –http-client-body-temp-path=/var/cache/nginx/client_temp –http-proxy-temp-path=/var/cache/nginx/proxy_temp –http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp –http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp –http-scgi-temp-path=/var/cache/nginx/scgi_temp –user=nginx –group=nginx –with-http_ssl_module –with-http_realip_module –with-http_addition_module –with-http_sub_module –with-http_dav_module –with-http_flv_module –with-http_mp4_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_random_index_module –with-http_secure_link_module –with-http_stub_status_module –with-http_auth_request_module –with-mail –with-mail_ssl_module –with-file-aio –with-ipv6 –with-http_spdy_module –with-cc-opt=’-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m64 -mtune=generic’
như thế được chưa ạ?
Bạn sử dụng những câu lệnh là tiến hành cài đặt rồi đó. Đoạn trên là mình ghi ý nghĩa của câu lệnh.
Bác Luân giúp em vấn đề này với ạ
– Cuối cùng, compile Nginx với module ngx_pagespeed và tiến hành cài đặt
Em làm tới bước này
VPS của e đã cài HOCVPS Script nên ko cần cài nginx nữa
Đã thấy folder pagespeed /usr/local/nginx/modules/ngx_pagespeed-release-1.8.31.4-beta
cd /usr/local/nginx
make
— > Lỗi : make: *** No targets specified and no makefile found. Stop.
make install
–> make: *** No rule to make target `install’. Stop.
Em không biết phải làm sao để install pagespeed
Mình dùng luôn bước này :
wget http://nginx.org/download/nginx-1.6.0.tar.gz
tar xvfvz nginx-1.6.0.tar.gz -C /usr/local –no-same-owner
Nhưng vẫn bị lỗi như vậy
Bác sử dụng phiên bản HocVPS Script nào vậy, bản mới 1.1 giờ bắt buộc phải làm toàn bộ các bước nhé.
[root@TungVps nginx-1.6.2]# make
make: *** No rule to make target `build’, needed by `default’. Stop.
[root@TungVps nginx-1.6.2]#
mình bị lỗi này là sao vậy Luân
Bạn xem hướng dẫn ở đây: http://unix.stackexchange.com/questions/75827/problem-compiling-a-driver-no-rule-to-make-target
Vậy là sao . 2 lỗi nó khác nhau mà bác hướng dẫn cụ thể đc k . E cũng bị dính lỗi này bác ơi
Lúc em làm đến khúc này :
cd /usr/local/nginx-1.6.0
./configure –add-module=/usr/local/nginx/modules/ngx_pagespeed-release-${NPS_VERSION}-beta –prefix=/usr/share/nginx –sbin-path=/usr/sbin/nginx –with-http_ssl_module –conf-path=/etc/nginx/nginx.conf –with-http_gzip_static_module –with-http_realip_module –group=nginx –user=nginx –pid-path=/var/run/nginx.pid –with-http_stub_status_module
Thí kết quả trả về lỗi như thế này :
checking for PCRE JIT support … not found
checking for OpenSSL library … not found
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using –with-openssl= option.
Như vậy là sao vậy bác
Mình sử dụng HocVPS script bản mới ra, centos 7. Sao đến bước compile Nginx với module ngx_pagespeed thì lại không tìm thấy ./configure nhỉ ? đã thử cd /usr/local/nginx , vì vào winscp thấy ko có folder nginx 1.6.0 .
Giúp mình với 🙂 Thanks bạn.
À hướng dẫn này mình sử dụng cho bản HocVPS Script cũ, bản mới không dùng cách compile nginx nữa nên bạn ko thấy folder đó. Bạn hãy tải về nginx manual nhé.
Bạn hướng dẫn khắc phục rõ hơn tí được không, mình cũng bị ở đoạn đó, mà tìm cách sửa mãi không được
Admin nói rõ hơn được ko?
Tức là bạn làm theo tất cả các bước như hướng dẫn này
Bác hướng dẫn bằng lệnh cụ thể với Hocvps script V1 đc ko mình làm mãi mà ko đc các đường dẫn thư mục chẳng giống hướng dẫn gì cả
Cụ thể vấn đề ở đâu bạn?
Cái phần cấu hình ngx_pagespeed 2 cái đó nó có khác nhau như thế nào bạn nhỉ?
Bạn nói phù hợp với trẻ trâu và bạn già mình chẳng hiểu kiểu gì.
Cách 2 dành cho những người advanced, nếu bạn mới làm quen với vps thì nên cài theo cách 1, đơn giản và mì ăn liền hơn.
Luân ơi, cho mình hỏi. mình restart thì lỗi sau:
[root@kenh76 nginx-1.6.0]# service nginx restart
nginx: [emerg] invalid parameter “kenh76.vn” in /etc/nginx/conf.d/kenh76.vn.conf
:106
nginx: configuration file /etc/nginx/nginx.conf test failed
khắc phục thế nào vậy Luân?
Cảm ơn cậu rất nhiều.
Bạn post nội dung file /etc/nginx/conf.d/kenh76.vn.conf vào phần Hỏi đáp nhé: https://hocvps.com/hoi-dap/
Luân cho mình hỏi, mình làm đến bước Tải mã nguồn ngx_pagespeed rồi nhưng có vẻ link bị die, toàn 404 thôi. Có link nào khác thay thế được không nhỉ?
Mình thấy link vẫn bình thường, bạn chú ý paste cả dòng này NPS_VERSION=1.8.31.4 trong Terminal nhé
Ừ, mình làm được rồi. Cho mình hỏi thêm là nếu đã cài trước nginx rồi thì giờ phải cài đặt lại đúng không? Và nếu phải làm thế thì những cái cấu hình trước đã chỉnh sửa trong nginx có mất đi không?
Bạn hãy copy file cấu hình và lưu ra chỗ khác, sau khi cài lại nginx thì paste lại là được.
Mình đang dùng hocvps script thì cài cái này có ảnh hưởng gì ko anh Luân nhỉ?
Có bị ảnh hưởng, làm tốc độ load trang nhanh hơn đấy
cái này cài được cho zpanel không nhỉ 🙂
Được nhé
Hình như Cloudzin có sẵn cái này rùi nhỉ? Chỉ cần chọn bật là được 😮
Chính xác vậy
Mình đang xài bộ đôi memcached vs ngx_pagespeed trên Centminmod quá ổn