- Nginx 1.27+ trên Ubuntu 24.04 hỗ trợ HTTP/3 (QUIC) chính thức.
- VPS 1GB chạy thoải mái Nginx + 1-2 site WordPress/Next.js, RAM idle ~50MB.
- SSL Let's Encrypt qua certbot tự renew, free vĩnh viễn.
- HTTP/3 giảm latency 20-30% với connection mới, đặc biệt user mobile 4G/5G.
- Setup 15-20 phút: apt install, cấu hình server block, certbot, mở UDP 443.
Nginx vẫn là web server số 1 cho VPS Ubuntu 2026: nhẹ, nhanh, config dễ. HTTP/3 (RFC 9114) là protocol mới dùng QUIC (UDP) thay TCP, giảm head-of-line blocking, kết nối nhanh hơn HTTP/2 đặc biệt trên mạng không ổn định. Let's Encrypt cho SSL miễn phí auto-renew. Combo này là chuẩn cho mọi site VN 2026.
Bài này hướng dẫn full setup Nginx + SSL + HTTP/3 trên VPS 1GB Ubuntu 24.04, kèm config tối ưu cho WordPress/Next.js, security header, gzip/brotli compression, reverse proxy backend. Phù hợp dev VN host site nhỏ-vừa, blog cá nhân, landing page client.
Mục tiêu cuối bài: bạn có VPS chạy Nginx với HTTPS auto, HTTP/3 enabled, browser hiện protocol "h3" trong DevTools, score A+ trên SSL Labs.
1. Vì sao Nginx vẫn được chọn 2026?
| Tiêu chí | Nginx | Caddy | Apache |
|---|---|---|---|
| RAM idle | ~50MB | ~30MB | ~80MB |
| HTTP/3 | Có (1.27+) | Có (mặc định) | Có (cần module) |
| Auto SSL | Cần certbot | Built-in | Cần certbot |
| Config syntax | Block declarative | Caddyfile | htaccess |
| Ecosystem | Lớn nhất | Đang phát triển | Legacy |
| Reverse proxy | Đỉnh | Đỉnh | Yếu hơn |
Nginx ăn điểm ở ecosystem (mọi tutorial, mọi tool đều có example Nginx) và performance reverse proxy. Caddy ngon nhất cho ai start mới, không phải tune nhiều. Apache đang dần thoái trào.
2. Yêu cầu VPS
- RAM: 1GB đủ cho Nginx + 1-2 site nhỏ. 2GB cho 5-10 site.
- vCPU: 1-2.
- SSD: 20GB.
- Ubuntu 24.04 LTS (Nginx 1.27 mặc định, support HTTP/3 sẵn).
- Domain: trỏ A record (IPv4) và AAAA (IPv6 optional) về IP VPS.
- Firewall: mở 80/tcp, 443/tcp, 443/udp (cho QUIC).
3. Cài Nginx từ Ubuntu repo
sudo apt update
sudo apt install -y nginx
nginx -v
# nginx/1.27.x
# Kiểm tra HTTP/3 support
nginx -V 2>&1 | grep -o 'http_v3'
# http_v3 - module enabledUbuntu 24.04 ship Nginx 1.27 với HTTP/3 module built-in. Không cần compile from source nữa như 2022-2023.
4. Cấu hình firewall mở UDP 443
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 443/udp # bắt buộc cho HTTP/3 QUIC
sudo ufw enable
sudo ufw statusLưu ý lớn: HTTP/3 dùng UDP 443. Quên mở UDP -> browser fallback HTTP/2 (vẫn chạy nhưng không có gain HTTP/3). Nhiều dev bỏ qua bước này.
5. Cài certbot Let's Encrypt
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# Lấy cert tự động + config Nginx
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
--email [email protected] --agree-tos --redirect
# Auto renew test
sudo certbot renew --dry-run
Certbot tự sửa Nginx config, thêm SSL listen 443, redirect 80 -> 443. Cron renew chạy 2 lần/ngày tự động. Cert valid 90 ngày, auto renew khi còn 30 ngày.
6. Cấu hình HTTP/3 trong server block
# /etc/nginx/sites-available/your-domain.com
server {
listen 80;
listen [::]:80;
server_name your-domain.com www.your-domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
# HTTP/3
listen 443 quic reuseport;
listen [::]:443 quic reuseport;
http3 on;
# Tell client about HTTP/3 availability
add_header Alt-Svc 'h3=":443"; ma=86400';
server_name your-domain.com www.your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers off;
root /var/www/your-domain.com;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
}sudo ln -s /etc/nginx/sites-available/your-domain.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx7. Verify HTTP/3 hoạt động
- Curl test:
curl --http3 -I https://your-domain.com. - Browser Chrome: DevTools -> Network -> click request -> Headers -> Protocol "h3".
- Online: https://http3check.net/?host=your-domain.com - đánh dấu xanh "HTTP/3 supported".
- SSL Labs: https://www.ssllabs.com/ssltest/ - score A+.
8. Security headers tốt nhất
# Thêm vào server block 443
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'" always;Test header với securityheaders.com. Mục tiêu score A+. CSP cần tuỳ biến theo từng app (WordPress, Next.js có asset/script khác nhau).
9. Gzip + Brotli compression
# Trong /etc/nginx/nginx.conf hoặc server block
gzip on;
gzip_vary on;
gzip_comp_level 6;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml text/javascript image/svg+xml;
# Brotli (cần module brotli, cài qua libnginx-mod-brotli)
sudo apt install -y libnginx-mod-http-brotli
# Thêm:
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript image/svg+xml;Brotli nén tốt hơn gzip 15-25% cho text. Modern browser support cả 2, Nginx tự chọn algo client request. Combine 2 cho compatible tốt nhất.
10. Reverse proxy cho Node.js/PHP backend
# Reverse proxy tới Next.js port 3000
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
# WordPress: PHP-FPM
location ~ .php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}11. Tối ưu Nginx cho VPS 1GB
# /etc/nginx/nginx.conf
worker_processes auto; # = số vCPU
worker_rlimit_nofile 65535;
events {
worker_connections 1024;
multi_accept on;
use epoll;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
keepalive_requests 100;
# Client body
client_max_body_size 50M;
client_body_buffer_size 16k;
# Open file cache
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}12. Monitor và troubleshoot
- Logs:
tail -f /var/log/nginx/access.logvà error.log. - Real-time monitor:
ngxtop(cài qua pip). - Check HTTP/3 ack: trong access.log, $server_protocol = "HTTP/3.0".
- Lỗi 502: backend down hoặc proxy_pass sai. Check service systemctl status.
- Lỗi SSL: certbot renew, kiểm tra fullchain.pem path đúng.
- Lỗi UDP 443 firewall: dùng
tcpdump -i any port 443xem có QUIC packet không.
VPS 1GB Ubuntu chạy Nginx + HTTP/3 + WordPress/Next.js
Cloud VPS TND Ubuntu 24.04, SSD CEPH, snapshot 1-click, backup hằng ngày, network 200Mbps trong nước. Nginx 1.27 ship sẵn HTTP/3, latency thấp tới user VN, SSL Let's Encrypt auto renew, score A+ SSL Labs ngay từ setup.
Xem 8 cấu hình Cloud VPS →FAQ
HTTP/3 có tăng tốc trang web thực sự?
Có nhưng gain phụ thuộc network. User wifi tốt: tăng ~10% LCP. User 4G/5G yếu hoặc packet loss cao: tăng 30-50%. Connection reuse nhanh hơn (0-RTT handshake). Lý do: QUIC trên UDP tránh head-of-line blocking của TCP. Worth enable kể cả gain nhỏ vì setup chỉ 1 dòng config.
Có nên dùng Caddy thay Nginx?
Caddy ngon hơn cho người mới: auto SSL không cần certbot, Caddyfile syntax sạch. Nginx mạnh hơn cho production: ecosystem rộng, tài liệu nhiều, fine-tune sâu. Cho VPS cá nhân 1-3 site đơn giản: Caddy nhanh hơn. Cho server agency host nhiều site khác nhau: Nginx linh hoạt hơn.
Certbot wildcard cert được không?
Được nhưng cần DNS-01 challenge thay HTTP-01. Cần API DNS provider (Cloudflare, Route53). Lệnh: certbot --dns-cloudflare -d *.your-domain.com. Phù hợp khi có nhiều subdomain (api.x, blog.x, app.x). Single cert wildcard quản lý dễ hơn nhiều cert riêng.
VPS 1GB chạy được mấy site Nginx?
1-3 site WordPress traffic nhẹ (1k page view/ngày), 5-10 site landing tĩnh, 1-2 Next.js SSR. Nginx idle nhẹ ~50MB. Bottleneck là PHP-FPM (WordPress) hoặc Node (Next.js) - mỗi process ~200-500MB. VPS 2GB an toàn hơn cho production.
Cloudflare proxy có cần Nginx HTTP/3 không?
Cloudflare đã bật HTTP/3 cho client cạnh CDN. Origin Nginx chỉ thấy HTTP/2 từ CF. Nếu site qua CF, không cần config HTTP/3 trên origin. Nếu site trực tiếp (không CDN), cần config HTTP/3 trên Nginx mới có gain.
Nginx vs OpenLiteSpeed cho WordPress?
OpenLiteSpeed (OLS) nhanh hơn Nginx 1.5-2x cho WordPress vì có LSCache plugin native (server-level cache không qua PHP). Nhược: ecosystem hẹp, cấu hình UI khác nhau. Nginx + FastCGI cache + Redis Object cache đạt 80-90% performance OLS, nhưng linh hoạt hơn cho site mix WP + custom app. Mình stick Nginx cho versatility.
- Hướng dẫn restore cPanel account từ file backup trên server
- Antigravity vs Claude Code: workflow agent của Google vs Anthropic
- Self-host Umami analytics: privacy-first cho landing dev solo
- Build AI Slack bot tự host bằng Claude API trên VPS
- Giải Pháp Proxy Cao Cấp Cho Người Kinh Doanh Online và Quản Lý Tài Khoản Seller
- Freelancer MMO Kiếm Tiền Online: Chọn Windows License Nào Cho PC/Laptop An Toàn



