Fast Byte - Thuê VPS Giá Rẻ
Hướng dẫn chung

Cách Cài HTTP/2 Trên VPS Ubuntu Nhanh Gọn, Tăng Tốc Web A-Z

cài HTTP2 trên VPS Ubuntu là giải pháp then chốt giúp tối ưu tốc độ phản hồi máy chủ, khắc phục tình trạng nghẽn kết nối và giảm thiểu độ trễ tải trang cho website của bạn. Thay vì loay hoay với giao thức HTTP/1.1 cũ kỹ làm chậm điểm số trải nghiệm người dùng, […]

Ảnh đại diện Thanh Lam NguyễnThanh Lam Nguyễn15 phút đọc

cài HTTP2 trên VPS Ubuntu là giải pháp then chốt giúp tối ưu tốc độ phản hồi máy chủ, khắc phục tình trạng nghẽn kết nối và giảm thiểu độ trễ tải trang cho website của bạn. Thay vì loay hoay với giao thức HTTP/1.1 cũ kỹ làm chậm điểm số trải nghiệm người dùng, việc chuyển đổi sang HTTP/2 sẽ mở ra khả năng ghép kênh và nén header ưu việt. Để đảm bảo hệ thống vận hành mượt mà, bạn có thể triển khai cấu hình trực tiếp trên các gói máy chủ tại ThueVPSGiaRe.vn.

1. Giao Thức HTTP/2 Là Gì Và Vì Sao Nên Nâng Cấp?

HTTP/2 là phiên bản nâng cấp lớn thứ hai của giao thức truyền tải siêu văn bản, được chuẩn hóa theo RFC 7540 nhằm thay thế chuẩn HTTP/1.1 vốn tồn tại nhiều điểm nghẽn từ năm 1997. Nâng cấp lên HTTP/2 giúp website tải song song dữ liệu trên cùng một kết nối, giảm độ trễ và tối ưu đáng kể tốc độ hiển thị trang.

Giao Thức HTTP2
Giao Thức HTTP2

Đối với các quản trị viên đang quản lý môi trường web server Nginx, HTTP/2 mang lại nhiều cải tiến đột phá so với phiên bản tiền nhiệm:

Tính năng HTTP/1.1 HTTP/2
Ghép kênh (Multiplexing) Mỗi kết nối xử lý 1 yêu cầu tuần tự Truyền nhiều yêu cầu đồng thời trên 1 kết nối
Nén phần đầu (Header compression) Định dạng văn bản thuần (Plain text) Thuật toán nén HPACK tối ưu
Đẩy dữ liệu từ máy chủ (Server push) Không hỗ trợ Hỗ trợ chủ động gửi tài nguyên cần thiết
Định dạng dữ liệu Dạng text dễ đọc nhưng cồng kềnh Khung nhị phân (Binary framing)
Tái sử dụng kết nối Bị giới hạn Duy trì liên tục, hiệu quả cao
Độ trễ truyền tải Cao do nghẽn đầu hàng (Head-of-line blocking) Giảm rõ rệt, tăng tốc tải trang

Việc kích hoạt giao thức này giúp cải thiện trực tiếp chỉ số Core Web Vitals và hỗ trợ thứ hạng SEO, đồng thời là biện pháp quan trọng nhằm khắc phục tình trạng nguyên nhân website chậm thường gặp trên các nền tảng trực tuyến.

Thuê VPS giá rẻ

CPU Intel Gold, SSD NVMe U.2, giá từ 50K/tháng

Nền Tảng Máy Chủ Vững Chắc Cho Website Nginx & HTTP/2

Môi trường máy chủ ổn định giúp phát huy tối đa lợi thế xử lý luồng đồng thời của HTTP/2. Fast Byte cung cấp hạ tầng phần cứng mạnh mẽ giúp bạn triển khai dịch vụ web an tâm với chi phí tiết kiệm nhất.

Tham khảo VPS giá rẻ

2. Các Điều Kiện Tiên Quyết Trước Khi Cấu Hình HTTP/2

Trước khi bắt đầu các bước cài đặt HTTP/2 trên Nginx, bạn cần đảm bảo hệ sinh thái máy chủ đã chuẩn bị đầy đủ các yêu cầu sau:

  • Hệ điều hành: Máy chủ cài đặt từ Ubuntu 20.04 LTS đến Ubuntu 24.04 LTS với quyền quản trị cao nhất. Nếu bạn đang thiết lập một hệ thống mới, hãy tham khảo các thao tác chuẩn trong bài hướng dẫn cách sử dụng VPS.
  • Tài khoản người dùng: Sở hữu quyền quản trị sudo hoặc sử dụng trực tiếp tài khoản root. Bạn có thể chủ động tạo sudo user trên Ubuntu để đảm bảo tiêu chuẩn an toàn máy chủ.
  • Tên miền đã thiết lập DNS: Một tên miền chính thức đã được cấu hình bản ghi A trỏ về IP của máy chủ. Cần thực hiện chuẩn xác thao tác trỏ tên miền về VPS trước khi xác thực chứng chỉ SSL.
  • Mở cổng mạng trên tường lửa: Đảm bảo cổng 80 (HTTP) và 443 (HTTPS) được cho phép truy cập, dễ dàng quản lý thông qua tính năng thiết lập tường lửa UFW trên Ubuntu.
  • Kỹ năng CLI: Làm quen với các câu lệnh cơ bản trên môi trường dòng lệnh Linux.

3. Bước 1 & 2: Cập Nhật Hệ Thống Và Cài Đặt Nginx

Bắt đầu bằng việc làm mới danh sách phần mềm để chắc chắn rằng hệ thống tiếp nhận các bản vá và phần mềm mới nhất:

sudo apt update && sudo apt upgrade -y
làm mới danh sách phần mềm
Làm mới danh sách phần mềm

Tiếp theo, tiến hành cài đặt Nginx từ kho lưu trữ mặc định của hệ điều hành Ubuntu:

sudo apt install nginx -y
cài đặt Nginx
Cài đặt Nginx

Sau khi hoàn tất quá trình tải và thiết lập gói, hãy khởi chạy dịch vụ Nginx ngay lập tức:

sudo systemctl start nginx

Cấu hình cho phép Nginx tự động khởi động cùng hệ thống mỗi khi máy chủ khởi động lại:

sudo systemctl enable nginx

Kiểm tra trạng thái dịch vụ nhằm xác minh Nginx đang chạy bình thường:

sudo systemctl status nginx

Kết quả hiển thị trạng thái active (running) màu xanh tức là web server đã hoạt động tốt.

Nginx đang chạy bình thường
Nginx đang chạy bình thường

Trước khi cài đặt UFW, bạn cần xác định hệ điều hành đang sử dụng trên VPS để lựa chọn lệnh cấu hình phù hợp. Mở Terminal và chạy lệnh sau:

cat /etc/os-release

Hệ thống sẽ hiển thị thông tin phiên bản Linux đang sử dụng. Nếu VPS chạy Ubuntu hoặc Debian, bạn có thể tiếp tục thực hiện các bước bên dưới.

Trong trường hợp Terminal hiển thị lỗi sudo: ufw: command not found, điều đó có nghĩa UFW chưa được cài đặt trên máy chủ.

Để cài đặt UFW trên Ubuntu hoặc Debian, chạy lần lượt hai lệnh sau:

apt update
apt install ufw -y

Lệnh đầu tiên cập nhật danh sách gói phần mềm. Lệnh thứ hai cài đặt UFW – công cụ quản lý tường lửa trên Linux.

Sau khi cài đặt UFW, bạn cần thiết lập các quy tắc cho phép những dịch vụ cần thiết hoạt động.

Bước 1: Cho phép kết nối SSH

Chạy lệnh sau để cho phép kết nối SSH từ xa:

ufw allow OpenSSH

Nếu SSH sử dụng cổng mặc định 22, quy tắc này sẽ cho phép kết nối qua cổng đó. Nếu SSH sử dụng cổng khác, hãy thay bằng cổng thực tế, ví dụ:

ufw allow 2222/tcp

Bước 2: Cho phép Nginx nhận kết nối HTTP và HTTPS

Để website có thể truy cập thông qua trình duyệt, bạn cần mở các cổng 80 (HTTP) và 443 (HTTPS). Chạy lệnh:

ufw allow 'Nginx Full'

Quy tắc Nginx Full cho phép lưu lượng truy cập qua cả hai cổng 80 và 443.

Sau khi hoàn tất cấu hình các quy tắc truy cập, bạn có thể bật tường lửa bằng lệnh:

ufw enable

Nếu Terminal hiển thị thông báo xác nhận, nhập y và nhấn Enter để tiếp tục.

Lưu ý: Luôn đảm bảo quy tắc SSH đã được thêm trước khi kích hoạt UFW. Nếu không, bạn có thể bị mất quyền truy cập SSH vào VPS. Nên giữ phiên SSH hiện tại và thử kết nối bằng một phiên mới trước khi đóng phiên cũ.

Để xác minh UFW đã được kích hoạt và các quy tắc truy cập đã được thiết lập chính xác, chạy lệnh:

ufw status

Nếu cấu hình thành công, kết quả hiển thị tương tự như sau:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80,443/tcp                 ALLOW       Anywhere

Trong đó:

  • Status: active: Tường lửa UFW đang hoạt động.
  • 22/tcp: Cho phép kết nối SSH qua cổng 22.
  • 80/tcp: Cho phép truy cập website qua HTTP.
  • 443/tcp: Cho phép truy cập website qua HTTPS.
  • ALLOW: Quy tắc cho phép lưu lượng truy cập.

Khi trạng thái hiển thị active và các cổng cần thiết đã được cho phép, bạn đã hoàn tất cấu hình UFW cơ bản trên VPS Linux.

UFW đã được kích hoạt
UFW đã được kích hoạt

4. Bước 3 & 4: Cài Đặt OpenSSL Và Chứng Chỉ Let’s Encrypt

HTTP/2 bắt buộc phải chạy trên nền tảng mã hóa TLS/SSL đối với mọi trình duyệt hiện đại. Vì vậy, hệ thống bắt buộc phải có OpenSSL phiên bản mới để hỗ trợ các bộ mã hóa cần thiết:

sudo apt install openssl -y
openssl version

Nếu kết quả trả về từ OpenSSL 1.0.2 trở lên (trên Ubuntu 20.04/22.04 thường là OpenSSL 1.1.1 hoặc OpenSSL 3.0.x), hệ thống của bạn đã hoàn toàn sẵn sàng cho HTTP/2.

Cài OpenSSL phiên bản mới
Cài OpenSSL phiên bản mới

Tiếp tục cài đặt công cụ Certbot cùng plugin tích hợp cho Nginx để cấp phát chứng chỉ mã hóa miễn phí. Bạn cũng có thể xem hướng dẫn độc lập chi tiết trong bài viết cài SSL Let’s Encrypt bằng Certbot trên Ubuntu:

sudo apt install certbot python3-certbot-nginx -y

Tiến hành xin chứng chỉ cho tên miền của bạn (hãy thay thế your_domain.com bằng domain thật):

sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot sẽ kiểm tra bản ghi domain, xin chứng chỉ và tự cấu hình SSL vào Nginx. Khi hệ thống hiển thị tùy chọn điều hướng lưu lượng truy cập, hãy chọn Redirect (tùy chọn 2) để chuyển toàn bộ kết nối không an toàn sang giao thức HTTPS chuẩn mực. Bạn có thể tham khảo quy trình này rõ hơn qua bài hướng dẫn cách chuyển HTTP sang HTTPS an toàn.

Chứng chỉ Let’s Encrypt hết hạn sau 90 ngày. Certbot cài sẵn cron job hoặc systemd timer để gia hạn tự động. Kiểm tra cơ chế tự động gia hạn chứng chỉ bằng lệnh dry-run:

sudo certbot renew --dry-run

5. Bước 5: Kích Hoạt HTTP/2 Trong Nginx Server Block

Khi đã có chứng chỉ SSL, bạn cần chỉnh sửa file cấu hình máy chủ ảo (server block) để khai báo giao thức HTTP/2 cho cổng HTTPS 443. Mở file cấu hình tương ứng với domain của bạn:

sudo nano /etc/nginx/sites-available/your_domain.com

(Hoặc mở file mặc định /etc/nginx/sites-available/default nếu bạn dùng server block mặc định). Tìm đến dòng chỉ thị listen 443 ssl; và bổ sung thêm tham số http2 vào cuối:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name your_domain.com www.your_domain.com;

    # Đường dẫn chứng chỉ do Certbot thiết lập
    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/your_domain.com/html;
    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}

# Block chuyển hướng từ HTTP sang HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name your_domain.com www.your_domain.com;
    return 301 https://$host$request_uri;
}

Điểm cốt lõi là thêm giá trị http2 sau ssl trên các chỉ thị lắng nghe cổng 443. Sau khi chỉnh sửa, nhấn tổ hợp phím CTRL + X, gõ Y và ấn Enter để lưu file.

6. Bước 6: Tối Ưu Hóa Cấu Hình Bảo Mật Và Hiệu Suất Nginx

Để tận dụng triệt để năng lực của HTTP/2 và siết chặt an toàn thông tin, bạn nên bổ sung các chỉ thị tinh chỉnh TLS, bộ nhớ đệm phiên làm việc, HSTS và nén dữ liệu bên trong khối server:

# Chỉ sử dụng các giao thức TLS hiện đại
ssl_protocols TLSv1.2 TLSv1.3;

# Cipher suites mạnh và tối ưu cho HTTP/2
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;

# Bộ nhớ đệm SSL session tối ưu hiệu năng
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;

# Cấu hình OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

# Bật HSTS bảo vệ kết nối
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

# Các header bảo mật tăng cường
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

# Nén Gzip bổ trợ cho nội dung văn bản
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;

Lưu ý: Dù HTTP/2 đã có sẵn cơ chế nén tiêu đề HPACK, việc bật nén Gzip cho phần nội dung (response body) vẫn giúp tiết kiệm lượng lớn băng thông đối với các tệp mã nguồn HTML, CSS, JavaScript.

7. Bước 7 & 8: Kiểm Tra Cú Pháp Và Khởi Động Lại Nginx

Nguyên tắc sống còn trong quản trị hệ thống là không bao giờ khởi động lại máy chủ web trước khi kiểm tra cú pháp cấu hình. Chạy lệnh kiểm tra mặc định của Nginx:

sudo nginx -t

Nếu kết quả trả về thông báo hợp lệ:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Bạn có thể an tâm áp dụng cấu hình mới. Riêng đối với trường hợp kích hoạt giao thức HTTP/2, khuyến nghị chạy lệnh khởi động lại toàn bộ để các luồng socket nhận diện đầy đủ:

sudo systemctl restart nginx

Nếu trong môi trường đang có lượng truy cập thường trực cần tránh downtime gián đoạn, bạn có thể cân nhắc dùng lệnh reload thay thế: sudo systemctl reload nginx.

8. Bước 9: Xác Minh Giao Thức HTTP/2 Đã Hoạt Động

Sau khi dịch vụ khởi động thành công, bạn hãy xác thực xem HTTP/2 đã thực sự được cung cấp cho người dùng hay chưa bằng một trong các phương pháp sau:

Cách 1: Sử dụng công cụ dòng lệnh cURL

Dùng lệnh curl để kiểm tra giao thức trao đổi trực tiếp với domain:

curl -I --http2 https://your_domain.com

Nếu dòng trạng thái phản hồi đầu tiên trả về HTTP/2 200, máy chủ đã kích hoạt HTTP/2 chuẩn xác.

Cách 2: Sử dụng OpenSSL ALPN

Kiểm tra quá trình đàm phán lớp ứng dụng (ALPN) qua cổng 443:

openssl s_client -connect your_domain.com:443 -alpn h2

Tìm kiếm dòng ALPN protocol: h2 trong dữ liệu in ra. Ký hiệu h2 đại diện cho giao thức HTTP/2 được thương lượng thành công trong bước bắt tay TLS.

Cách 3: Kiểm tra trên trình duyệt web

Mở trang web trên Google Chrome hoặc Mozilla Firefox, nhấn phím F12 để bật Developer Tools. Chọn tab Network, tải lại trang (F5), nhấn chuột phải vào thanh tiêu đề cột trong danh sách request và tích chọn cột Protocol. Bạn sẽ thấy giá trị h2 xuất hiện tại các yêu cầu gửi đến domain của mình.

Cách 4: Sử dụng công cụ trực tuyến

Truy cập trang kiểm tra trực tuyến https://tools.keycdn.com/http2-test, nhập địa chỉ trang web của bạn và nhấn kiểm tra để nhận bảng phân tích chi tiết về trạng thái HTTP/2 và cấu hình TLS.

9. Xử lý lỗi thường gặp khi bật HTTP/2

Nếu trong quá trình thực hiện bạn gặp trục trặc, đối chiếu ngay với 5 tình huống phổ biến nhất dưới đây:

Hiện tượng Nguyên nhân Cách xử lý
Trình duyệt không hiển thị HTTP/2 dù cấu hình đúng Trình duyệt đã cache kết nối HTTP/1.1 cũ Xóa cache và cookie của trình duyệt, hoặc test lại bằng cửa sổ ẩn danh (incognito)
nginx -t báo lỗi chứng chỉ SSL Đường dẫn chứng chỉ trong file cấu hình sai Kiểm tra đường dẫn chính xác bằng sudo ls /etc/letsencrypt/live/your_domain.com/ rồi cập nhật directive ssl_certificate và ssl_certificate_key tương ứng
Không truy cập được cổng 443 Tường lửa chặn lưu lượng HTTPS Chạy sudo ufw allow 443/tcp và xác nhận bằng sudo ufw status — nếu mới làm quen, xem thêm cách thiết lập tường lửa UFW trên Ubuntu
Certbot thất bại khi xác thực tên miền Bản ghi DNS A chưa lan truyền hoặc cổng 80 bị chặn Kiểm tra tên miền đã trỏ đúng IP bằng dig your_domain.com A; đảm bảo cổng 80 mở cho ACME HTTP challenge
Lỗi unknown directive "http2" trong Nginx Phiên bản Nginx quá cũ (trước 1.9.5) hoặc biên dịch thiếu HTTP/2 Nâng cấp Nginx. Trên Ubuntu 20.04 trở lên, bản trong repo mặc định đã hỗ trợ HTTP/2; có thể thêm PPA chính thức: sudo add-apt-repository ppa:nginx/stable && sudo apt update && sudo apt upgrade nginx

Tổng Kết Quy Trình Triển Khai HTTP/2

Nắm vững cách cài HTTP2 trên VPS Ubuntu là một trong những bước tối ưu hóa đơn giản nhưng mang lại hiệu quả vượt trội cho mọi website. Nhờ vào việc tận dụng ghép kênh, nén dữ liệu tiêu đề và duy trì kết nối bền bỉ trên nền tảng Nginx, trải nghiệm người dùng sẽ được nâng lên một tầm cao mới. Đừng quên thường xuyên chạy lệnh cập nhật hệ thống để nhận các bản vá an ninh mới nhất cho máy chủ của bạn.

Cần một VPS giá rẻ để bắt đầu?

Chọn cấu hình vừa đủ nhu cầu, ưu tiên chi phí dễ tiếp cận và khả năng quản trị riêng.

Xem bảng giá VPS

Lưu ý kỹ thuật: Nội dung hướng dẫn trên mang tính chất tham khảo thực hành. Các câu lệnh, quy tắc phân quyền và đường dẫn cấu hình có thể có sự khác biệt nhỏ tùy theo phiên bản Nginx hoặc môi trường hệ điều hành thực tế của bạn. Bạn nên chủ động tạo bản sao lưu dữ liệu và kiểm thử kỹ lưỡng trước khi đưa vào áp dụng chính thức trên các hệ thống quan trọng.

Chia sẻ: Facebook LinkedIn
Quay lại trang blog

Bài viết liên quan