Skip to main content

[Thủ thuật Linux] Chuyển HTTP/1 sang HTTP/2 để tăng tốc độ website trên Nginx

HTTP/2 là gì?

HTTP/2 thực chất là phiên bản 2.0, và là phiên bản chính thức tiếp theo của giao thức HTTP, nhằm đem lại sự cải thiện về tốc độ tải trang, hiệu suất khi duyệt web và cũng như mang tới tính bảo mật cao hơn cho website so với HTTP/1.

Lưu ý:

HTTP/2 tốn nhiều tài nguyên hơn, làm tăng mức tiêu thụ bộ nhớ của máy chủ

- Để sử dụng HTTP/2 website cần có SSL/TLS

Có nên nâng cấp lên HTTP/2 không?

Tính tới thời điểm hiện tại thì hầu hết các trình duyệt hiện này đã và đang hỗ trợ đầy đủ phiên bản HTTP/2 và trong giai đoạn thử nghiệm phiên bản HTTP/3.

Tuy nhiên việc trình duyệt hổ trợ chỉ là một vấn đề, mà quan trọng nhất là sever lưu trữ web của bạn có hỗ trợ phiên bản này hay không, nếu không được hỗ trợ cài đặt, thì bạn không thể nào cài đặt nó được.

Vậy nên nếu sever của bạn và trình duyệt hiện tại đã hổ trợ đầy đủ phiên bản HTTP/2 thì tại sao bạn không cài đặt ngay và luôn nhĩ. Với phiên bản HTTP/2 không chỉ mang lại lợi ích về bảo mật và nó còn giúp trang web của bạn có tốc độ tải nhanh hơn rất nhiều.

Cách kiểm tra xem đã cài đặt HTTP/2 chưa

Để kiểm tra xem trang web của bạn đã được cài đặt phiên bản HTTP/2 hay chưa, thì bạn chỉ việc truy cập vào một trong hai trang web bên dưới và nhập địa chỉ wesite của mình vào, nhấn test để kiểm tra.

https://http2.pro và https://tools.keycdn.com/http2-test

Image
kiểm tra đã tồn tại http 2

Hướng dẫn cài đặt HTTP/2 trên Nginx

Để hoạt động được VPS/Cloud Server cần có OpenSSL v1.0.2 trở lên

Để kiểm tra OpenSSL

# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

Bước 1: Tích hợp packages cần thiết vào Nginx

1.1. Kiểm tra version nginx

# 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

1.2. Cài đặt packages

Với CentOS

$ yum install epel-release gcc-c++ pcre-devel zlib-devel supervisor -y

Với Ubuntu:

$ apt-get install apt-utils autoconf automake build-essential \
git libcurl4-openssl-dev libgeoip-dev liblmdb-dev \
libpcre++-dev libtool libxml2-dev libyajl-dev \
pkgconf wget zlib1g-dev  libssl-dev \
supervisor

Tải source về :

$ cd /usr/local/src
$ wget http://nginx.org/download/nginx-1.12.2.tar.gz && tar -xzvf nginx-1.12.2.tar.gz
$ wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz && tar -xzvf openssl-1.1.0g.tar.gz

Bước 2: Biên dịch Nginx

Tiến hành biên dịch Nginx với câu lệnh như sau:

$ cd //usr/local/src/nginx-1.12.2
$ ./configure –prefix=/webserver/ \
–with-compat \
–with-http_ssl_module \
–with-http_realip_module \
–with-http_gunzip_module \
–with-http_gzip_static_module \
–with-http_stub_status_module \
–with-http_auth_request_module \
–with-threads \
–with-stream \
–with-http_v2_module

trong đó:

–with-http_v2_module :  là tham số để bật tính năng http/2

Kết quả hiển thị như dưới là thành công:

Configuration summary
  + using threads
  + using system PCRE library
  + using OpenSSL library: /usr/local/src/openssl-1.1.0g
  + using system zlib library

  nginx path prefix: "/webserver/ "
  nginx binary file: "/webserver/sbin/nginx"
  nginx modules path: "/usr/lib64/nginx/modules"
  nginx configuration prefix: "/webserver/"
  nginx configuration file: "/webserver/nginx.conf"
  nginx pid file: "/var/run/nginx.pid"
  nginx error log file: "/var/log/nginx/error.log"
  nginx http access log file: "/var/log/nginx/access.log"
  nginx http client request body temporary files: "/var/cache/nginx/client_temp"
  nginx http proxy temporary files: "/var/cache/nginx/proxy_temp"
  nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp"
  nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp"
  nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"

– Chạy lệnh phía dưới để tiến hành compile Nginx.

$ make
$ make install

Đợi tầm 3-5 phút để tiến trình thành công là bạn có thể sử dụng bộ Nginx đã được biên dịch thủ công để làm Webserver.

Bước 3: Cấu hình SSL HTTP/2 trong Nginx Conf

Webserver Nginx trên hệ thống của bạn đã sẵn sàng thiết lập giao thức HTTP/2 giữa Server và Browser. Bạn cần kích hoạt giao thức HTTP2 kèm SSL trong cấu hình Nginx của mỗi site.

Bạn sửa cấu hình Nginx trong block server {…} như sau (chỉnh sửa đối với từng website trong hệ thống).

….

server {
listen 443 ssl http2;

…..

}

Bên cạnh đó, bạn nên cấu hình nâng cao SSL như hướng dẫn cài đặt chứng chỉ SSL

Sau khi làm xong các bước nêu trên, thì mở terminal (cửa sổ dòng lệnh) lên, và nhập vào câu lệnh bên dưới để làm mới lại sever NGINX.

service nginx reload

Cuối cùng là kiểm tra lại