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).
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).
Hướng dẫn nâng cấp HTTP/2 trên Nginx Webserver
Trong bài này TinoHost sẽ làm ví dụ trên trang https://test.TinoHost.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
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
tar -xvzf openssl-1.0.2g.tar.gzwget -O /usr/local/src/openssl-1.0.2g.tar.gz https://www.openssl.org/source/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/conf
mkdir -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_confs
service 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
Nếu kết quả hiện ra như trên hình thì đã nâng cấp thành công HTTP/2