Hướng dẫn Nâng cấp HTTP/2 trên Nginx Webserver của DirectAdmin

http1-vs-http2

DirectAdmin là phần mềm quản trị Hosting chuyên nghiệp hiện đang được sử dụng bởi nhiều khách hàng. Mặc định DirectAdmin sử dụng giao thức HTTP/1.1 trong cấu hình cài đặt (Custombuild 2.0).

Phạm vi Áp dụng

Hướng dẫn này áp dụng cho trường hợp sử dụng 2 server là Apache và Nginx, trong đó Apache là Application server và Nginx là Proxy. Nếu cấu hình DirectAdmin của bạn là Nginx chạy độc lập thì cần thay thế file:

/usr/local/directadmin/custombuild/configure/nginx_reverse/configure.nginx

Bằng file

/usr/local/directadmin/custombuild/configure/nginx/configure.nginx

Trước khi bắt đầu chúng ta cùng tìm hiểu sơ lược về HTTP/2 và lợi ích khi nâng cấp.

HTTP/2 là gì?

HTTP/2 là giao thức mới được phát triển để thay thế HTTP/1.x – hiện đang là mặc định cài đặt trên tất cả các webserver. HTTP/2 là phiên bản hoàn toàn mới không phải bản chỉnh sửa của HTTP/1.x. Nó nhanh hơn, đơn giản hơn và mạnh hơn HTTP/1.x.

Khung thiết kế của HTTP/2

HTTP/2 có bộ khung nhị phân hoàn toàn mới và theo đó không áp dụng ngược trở lại cho HTTP/1.x. Tuy nhiên  HTTP/2 vẫn sử dụng các khái niệm và ngữ nghĩa mấu chốt của giao thức cũ mà chỉ thay đổi các quy định khuôn dạng dữ liệu truyền trên giao thức ngoài ra bổ sung thêm khái niệm “quyền ưu tiên” và “server push“.

Chi tiết về HTTP/2 xin mời xem tại đây:

Ưu điểm của HTTP/2

Tăng hiệu suất vận hành của giao thức thông qua Giảm độ trễ khi phản hồi tới người dùng cuối (Clients) và Sử dụng tài nguyên mạng của máy chủ (Server Push).

http1-vs-http2
http1-vs-http2

Hướng dẫn nâng cấp HTTP/2 trên Nginx Webserver

Trong bài này JDC sẽ làm ví dụ trên trang https://test.jdc.vn

Bước 1: Kiểm tra trạng thái của HTTP/2

Để kiểm tra xem server đã được nâng cấp HTTP/2 hay chưa chúng ta sử dụng công cụ trực tuyến https://http2.pro

No HTTP/2 support
No HTTP/2 support

Nếu kết quả hiện ra như hình trên thì trang của bạn chưa hỗ trợ HTTP/2, bây giờ chúng ta sang bước kế tiếp.

Bước 2: Tải thư viện OpenSSL 1.0.2

HTTP/2 bắt đầu được hỗ trợ trên 1.0.2, mà thư viện cài đặt của DirectAdmin phổ biến trên phiên bản 1.50 là 1.0.1e.

Lần lượt thực hiện ba lệnh sau:

cd /usr/local/src/wget -O /usr/local/src/openssl-1.0.2g.tar.gz https://www.openssl.org/source/openssl-1.0.2g.tar.gz

hoặc

wget http://files.jdc.vn/http2/openssl-1.0.2g.tar.gz

tar -xvzf openssl-1.0.2g.tar.gz

Bước 3: Tạo cấu hình riêng cho Nginx

Mục đích của bước này là tạo ra bộ file cấu hình riêng của bạn, không nên sửa trực tiếp vào file mặc định của DirectAdmin.

Tạo thư mục lưu cấu hình riêng

mkdir -p /usr/local/directadmin/custombuild/custom/nginx/confmkdir -p /usr/local/directadmin/data/templates/custom/

Tham số -p có nghĩa là tạo thư mục theo đường dẫn, việc này sẽ rút ngắn quá trình tạo thư mục

Sao chép file cấu hình Nginx

Sao chép 3 file cấu hình của Nginx là vào thư mục custom vừa tạo

  • nginx-vhosts.conf
  • nginx_server_secure.conf
  • nginx_server_secure_sub.conf

Thực hiện lần lượt lệnh copy file như sau:

cp /usr/local/directadmin/custombuild/configure/nginx/conf/nginx-vhosts.conf /usr/local/directadmin/custombuild/custom/nginx/conf/nginx-vhosts.conf
cp /usr/local/directadmin/data/templates/nginx_server_secure.conf /usr/local/directadmin/data/templates/custom/nginx_server_secure.conf
cp /usr/local/directadmin/data/templates/nginx_server_secure_sub.conf /usr/local/directadmin/data/templates/custom/nginx_server_secure_sub.conf

Sửa file nginx-vhosts.conf

bằng lệnh

nano /usr/local/directadmin/custombuild/custom/nginx/conf/nginx-vhosts.conf

Tìm dòng

# HTTPS server
#
server {
listen |IP|:|PORT_443| ssl|SPACE_HTTP2|;
listen 127.0.0.1:|PORT_443| ssl|SPACE_HTTP2|;
listen [::1]:|PORT_443| ssl|SPACE_HTTP2|;

Đổi đoạn ssl|SPACE_HTTP2| thành ssl http2

Kết quả sẽ như sau:

server {listen |IP|:|PORT_443| ssl http2;listen 127.0.0.1:|PORT_443| ssl http2;listen [::1]:|PORT_443| ssl http2;

Lưu lại sửa đổi: bấm Ctrl + O

Thoát khỏi soạn thảo: bấm Ctrl + X

Sửa file nginx_server_secure.conf

bằng lệnh:

nano /usr/local/directadmin/data/templates/custom/nginx_server_secure.conf

Tìm dòng:

listen |IP|:|PORT_443| ssl;

Sửa thành:

listen |IP|:|PORT_443| ssl http2;

Lưu lại sửa đổi: bấm Ctrl + O

Thoát khỏi soạn thảo: bấm Ctrl + X

Sửa file nginx_server_secure_sub.conf

bằng lệnh:

nano /usr/local/directadmin/data/templates/custom/nginx_server_secure_sub.conf

Tìm dòng:

listen |IP|:|PORT_443| ssl;

Sửa thành:

listen |IP|:|PORT_443| ssl http2;

Lưu lại sửa đổi: bấm Ctrl + O

Thoát khỏi soạn thảo: bấm Ctrl + X

Bước 4: Tạo cấu hình biên dịch lại Nginx

Sửa file configure.nginx

Trước khi sửa file để đảm bảo an toàn cần backup, thực hiện các lệnh như sau:

cd /usr/local/directadmin/custombuild/configure/nginx_reverse/tar -czf configure.nginx.default.tar.gz configure.nginx

Sau khi backup thì sửa file bằng lệnh:

nano /usr/local/directadmin/custombuild/configure/nginx_reverse/configure.nginx

Tìm đến đoạn quy định http_v2_module như sau:

"--with-http_v2_module" \"--with-cc-opt='-D FD_SETSIZE=32768'"
Thêm vào giữa 2 dòng trên đoạn đường dẫn chưa mã nguồn OpenSSL 1.0.2 đã tải ở trên:

"--with-openssl=/usr/local/src/openssl-1.0.2g" \

Kết quả trông như sau:

“–with-http_v2_module” \
“–with-openssl=/usr/local/src/openssl-1.0.2g” \
“–with-cc-opt=’-D FD_SETSIZE=32768′”

Lưu lại sửa đổi: bấm Ctrl + O

Thoát khỏi soạn thảo: bấm Ctrl + X

Bước 5: Thực hiện Rebuild lại Nginx

Ghi vào Task queue

echo "action=rewrite&value=nginx" >> /usr/local/directadmin/data/task.queue/usr/local/directadmin/dataskq d

Chạy Update để DiectAdmin build lại cấu hình Nginx

Thực hiện lần lượt các lệnh sau:

cd /usr/local/directadmin/custombuild./build nginx_apache./build rewrite_confsservice nginx restart

Quá trình cài đặt mất vài phút, đến khi Nginx khởi động lại thành công thì hãy kiểm tra lại bằng công cụ https://http2.pro

HTTP/2 supported!
HTTP/2 supported!

Nếu kết quả hiện ra như trên hình thì đã nâng cấp thành công HTTP/2

 

Was this article helpful?

Related Articles

Leave A Comment?

This site uses Akismet to reduce spam. Learn how your comment data is processed.