Hướng dẫn cài đặt Nginx cho website và PageSpeed module trên CentOS 7

Giới thiệu

Nginx là gì ?

Nginx web server ra đời năm 2004 dưới bàn tay của lập trình viên Igor Sysoev với mục tiêu : “Nginx was written specifically to address the performance limitations of Apache web servers.” – Owen Garrett, quản lý dự án Nginx. Nginx lần đầu được sử dụng cho web rumbler.ru. Nginx có 2 phiên bản: open source và Nginx plus thêm các tính năng và hỗ trợ doanh nghiệp. Mục tiêu của NGINX là tạo ra web server nhanh nhất và duy trì độ ổn định. Nginx đã đánh bại Apache kể từ tháng 4 năm 2019.

Nginx là phần mềm mã nguồn mở web server hoàn toàn miễn phí với hiệu năng cao. Nginx có thể là HTTP server, reverse proxy hoặc IMAP/POP3 proxy server. Nginx là một trong số ít servers được viết ra để giải quyết C10K Problem.

Không như các server truyền thống, Nginx không phụ thuộc vào các luồng (threads) để giải quyết các yêu cầu (requests) thay vào đó nó dùng kiến trúc hướng sự kiện (event-driven) không đồng bộ (asynchronous), kiến trúc này sử dụng lượng bộ nhớ nhỏ, nhưng quan trọng hơn, có thể dự đoán được mức tải của bộ nhớ. Ngay cả khi bạn không phải xử lý hàng nghìn yêu cầu liên tục thì bạn vẫn có thể được lợi từ hiệu suất cao và mức chiếm dụng bộ nhớ nhỏ của Nginx. Nginx có thể được dùng cho VPS cho tới các cụm máy chủ lớn (cluster).

Nginx được sử dụng bởi những trang web nổi tiếng như: Netflix, Hulu, Pinterest, CloudFlare, Airbnb, WordPress.com, GitHub, SoundCloud, Zynga, Eventbrite, Zappos, Media Temple, Heroku, RightScale, Engine Yard, StackPath, CDN77 và nhiều trang web khác.

Google PageSpeed là gì?

PageSpeed là một module được tạo bởi Google được sử dụng cho cả Nginx và Apache giúp tăng tốc web của bạn và giảm thời gian tải các trang bằng cách:

  • Combining CSS: Giảm số lượng HTTP request khi tải lại trang bằng cách thay thế nhiều file CSS riêng biệt thành một file.
  • Combining Javascript: Giảm số lượng HTTP request khi tải lại trang bằng cách thay thế nhiều file Javascript riêng biệt thành một file.
  • Minifying HTML: Loại bỏ tất cả những gì không cần thiết cho việc hiển thị trang.
  • Defer JavaScript: Quá trình parse html không dừng lại cho tới khi hoàn thành.
  • Optimize Images: Tối ưu hình ảnh.
  • Rewriting Images: Giảm size ảnh để không chiếm nhiều bộ nhớ
  • Layz Loading Images: Những hình ảnh khách hàng chưa thấy trên màn hình sẽ chưa được load.
  • Xem nhiều thêm tại đây

Cài đặt PageSpeed module và Nginx

Bước 1. Cài đặt các dependencies:

Trước khi cài đặt các thư viên cần thiết ta nên update hệ thống, login với quyền root hoặc dùng sudo chạy các lệnh sau.

$ yum update -y
$ yum install gcc-c++ gcc pcre-devel zlib-devel make cmake unzip openssl-devel libuuid-devel wget nano

Bước 2. Tải Nginx và PageSpeed module:

Tải source code của PageSpeed, tại thời điểm viết bài phiên bản mới nhất của PageSpeed bản stable là 1.13.35-2-stable.

https://www.modpagespeed.com/doc/release_notes.

PageSpeed module

Tiến hành tải PageSpeed module sau đó giải nén.

$ NPS_VERSION=1.13.35.2-stable
$ wget https://github.com/pagespeed/ngx_pagespeed/archive/v${NPS_VERSION}.zip
$ unzip v${NPS_VERSION}.zip

Để có thể compile Nginx ta cần tải PSOL (PageSpeed Optimization Libraries). Sau khi tải giải nén vào đường dẫn pagespeed.

$ cd incubator-pagespeed-ngx-${NPS_VERSION}/
$ 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})
This image has an empty alt attribute; its file name is image-29.png

Tải source code của Nginx, tại thời điểm viết bài phiên bản mới nhất của Nginx bản mainline là 1.19.10.

Nginx

Kế tiếp ta tiến hành tải source code của Nginx sau đó giải nén.

$ NGINX_VERSION=1.19.10
$ wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
$ tar -xvzf nginx-${NGINX_VERSION}.tar.gz

Bước 3. Build Nginx với ngx_pagespeed từ Source:

Bây giờ ta có thể biên dịch Nginx với PageSpeed module, vào thư mục chứ source code của Nginx. Cấu hình source với configure.

$ cd nginx-${NGINX_VERSION}/
$ ./configure --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_ssl_module --with-http_v2_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-pcre --with-file-aio --with-pcre-jit --add-module=$HOME/incubator-pagespeed-ngx-${NPS_VERSION} ${PS_NGX_EXTRA_FLAGS}

Bước 4. Bắt đầu cài đặt Nginx:

Sau khi cấu hình xong biên dịch Nginx với lệnh sau, quá trình này có thể kéo dài tới vài phút.

$ make

Sau khi biên dịch xong ta có thể bắt đầu cài đặt phần mềm bằng lệnh sau.

$ make install

Để có thể start hoặc stop nginx ta cần phải tạo một startup script, ta có thể tham khảo đoạn script tại đây và thêm đoạn script vào bằng lệnh sau. Sau khi chèn đọa script vào ta có thể start Nginx và thêm Nginx vào default runlevel (Nginx sẽ start và stop tự động khi bật và mở máy)

$ nano /etc/init.d/nginx
$ chmod +x /etc/init.d/nginx
$ service nginx start
$ systemctl enable nginx

Bước 5. Cấu hình Nginx với ngx_pagespeed:

Để có thể sử dụng PageSpeed module, ta tạo thư mục cache cho PageSpeed và gán quyền sở hữu cho nginx.

$ mkdir -p /var/ngx_pagespeed_cache
$ chown -R nginx:nginx /var/ngx_pagespeed_cache

Mở file /etc/nginx/nginx.conf sau đó dán đoạn code sau vào.

*lưu ý thêm vào trong block server

pagespeed on;
# Needs to exist and be writable by nginx.  Use tmpfs for best performance.
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 ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }

Bước 6. Kiểm tra:

Restart Nginx để áp dụng và kiểm tra PageSpeed module:

$ service nginx restart
$ curl -I -p http://localhost

Đến đây, PageSpeed module đã được cài đặt thành công cho nginx trên hệ điều hành CentOS 7 và trang web của quý khách đã tăng tốc độ đáng kể, quý khách có thể kiểm tra lại trên công cụ Google PageSpeed insight để xem kết quả sau khi dùng module PageSpeed.

Xem thêm nhiều bài hướng dẫn hơn tại: https://howto.nsupport.asia/

Was this article helpful?

Related Articles

Leave A Comment?