Lộ trình học Nginx
Module 0: Chuẩn bị & Kiến trúc nền tảng (Ngày 1)
Giới thiệu về NGINX:
Lịch sử, và kiến trúc event-driven/asynchronous (giải quyết C10K problem) - so với mô hình process/thread-per-connection của Apache.
Kiến trúc master process – worker process, cơ chế
worker_connections,worker_processes.Hệ sinh thái sản phẩm hiện tại (quan trọng, hay bị hiểu sai):
NGINX Open Source (OSS) - miễn phí, mã nguồn mở.
F5 NGINX Plus (trước đây gọi tắt là "NGINX Plus") - bản thương mại, có hỗ trợ chính thức từ F5 (F5 đã mua lại NGINX Inc. từ 2019).
NGINX Unit - application server đa ngôn ngữ (Python, PHP, Node.js, Java, Go...).
F5 NGINX App Protect - WAF/DoS protection thương mại.
NGINX Gateway Fabric - implementation của Kubernetes Gateway API, hướng phát triển tương lai thay cho Ingress.
So sánh NGINX với Apache, HAProxy, Envoy, Traefik, Caddy - khi nào chọn cái nào.
Các ứng dụng phổ biến: web server, reverse proxy, load balancer, API gateway, edge cache, Kubernetes ingress.
Cài đặt môi trường:
Cài đặt NGINX OSS trên Ubuntu 24.04 LTS/CentOS Stream/macOS - phân biệt kênh
stablevàmainline(mainline có QUIC/HTTP3, tính năng mới).Cài đặt Docker và chạy container NGINX chính thức (image official, so sánh với image tối ưu như
macbre/nginx-http3có sẵn Brotli/Zstd/HTTP3).
Bài tập:
Cài NGINX trên VM hoặc cloud (dùng bản mainline để chuẩn bị cho các module sau).
Khám phá cấu trúc thư mục, chạy
nginx -Vđể xem các module đã compile sẵn (kiểm tra cóhttp_v3_modulekhông).Hiển thị trang "Welcome to NGINX" và thử
nginx -t,nginx -s reload.
Module 1: NGINX Fundamentals & Giao thức truyền tải (Ngày 2-3)
Cấu hình cơ bản:
Các khối lệnh chính (
events,http,server,location), thứ tự ưu tiên khi match location (=,~,~*, prefix).Chỉ thị
listen,server_name,root,index,try_files.Biến số NGINX,
mapdirective để xử lý logic điều kiện.Xử lý file tĩnh, virtual host,
includeđể tổ chức config theo module.
HTTPS/TLS hiện đại:
Tạo/cài chứng chỉ với Let's Encrypt, tự động hoá gia hạn bằng
certbothoặcacme.sh.Khuyến nghị 2026: ưu tiên TLS 1.3, cipher suite hiện đại (
TLS_AES_128_GCM_SHA256,TLS_CHACHA20_POLY1305_SHA256), OCSP Stapling, HSTS.Kiểm tra điểm bảo mật qua công cụ SSL Labs.
HTTP/2 và HTTP/3 (QUIC) - nội dung mới, bắt buộc cho production 2026:
HTTP/3 chạy trên QUIC (UDP) thay vì TCP, giảm latency, loại bỏ head-of-line blocking, hỗ trợ connection migration (rất tốt cho mobile).
Yêu cầu: OpenSSL 3.5.1+ (khuyến nghị) hoặc BoringSSL/LibreSSL/QuicTLS; bản build NGINX có
--with-http_v3_module.Cấu hình mẫu:
listen 443 quic reuseport;song song vớilisten 443 ssl;, quảng bá qua headerAlt-Svc.Mở firewall cho UDP/443 (khác với TCP/443 truyền thống) - đây là lỗi rất hay gặp khi go-live.
Lưu ý: tính năng vẫn được NGINX gắn nhãn thử nghiệm ổn định dần qua các bản mainline, nên cần test kỹ trước khi bật ở production.
Bài tập:
Tạo website với nhiều virtual host, cấu hình redirect HTTP → HTTPS.
Cài SSL miễn phí, đạt Grade A/A+ trên SSL Labs.
Bật HTTP/2 và thử nghiệm HTTP/3, xác minh bằng
curl --http3hoặc DevTools của Chrome, kiểm tra log phân biệt được request nào dùng h2 vs h3.
Module 2: Load Balancing & Upstream Nâng cao (Ngày 4-5)
Thuật toán cân bằng tải: Round Robin, Least Connections, IP Hash, Weighted, Random with two choices.
Sticky sessions: IP hash, cookie-based (NGINX Plus có
stickydirective native).Health Checks:
Passive health checks (OSS) vs Active health checks (NGINX Plus).
Cấu hình timeout, số lần thử lại,
slow_startđể tránh "thundering herd" khi server mới join lại.
Upstream nâng cao cho production:
keepaliveconnections tới upstream để giảm overhead handshake.resolverdirective + biến$upstreamđể hỗ trợ service discovery động (DNS-based) trong môi trường container/K8s, nơi IP backend thay đổi liên tục.Shared memory zone (
zonedirective) để reload config mà không mất connection state.
Bài tập:
Dựng hệ thống cân bằng tải cho ≥3 backend.
Cấu hình sticky session + health check, thử kill 1 backend và quan sát failover.
Cấu hình upstream resolve động qua DNS (mô phỏng service discovery).
Module 3: Traffic Management & API Gateway Patterns (Ngày 6-7)
Rewrite Module: quy tắc regex, redirect 301/302, biến đổi response.
GeoIP2 Module (đã thay thế module
geoipcũ): dùng MaxMind GeoIP2 database để chặn/định tuyến theo quốc gia.Limit Request/Connection Module: rate limiting (
limit_req), connection limiting (limit_conn), chống DDoS lớp ứng dụng.njs (NGINX JavaScript) - nội dung mới, quan trọng cho API Gateway:
Viết script JS để transform request/response, xử lý logic phức tạp mà config thuần không làm được.
Dùng cho: xác thực JWT tự viết (nếu không dùng NGINX Plus
auth_jwt), custom header injection, A/B testing logic.
gRPC proxying:
grpc_pass, xử lý HTTP/2 trailer.Bài tập:
Viết rewrite rule chuyển URL cũ sang mới.
Chặn truy cập theo quốc gia bằng GeoIP2.
Rate limit một API endpoint, log lại các IP bị chặn.
Viết một njs script đơn giản để validate JWT token trong header trước khi proxy tới backend.
Module 4: Content Caching & Compression (Ngày 8-9)
Proxy Cache:
Cấu hình cache zone, TTL,
proxy_cache_key, cache purging (proxy_cache_purge- NGINX Plus, hoặc kỹ thuật thủ công với OSS).Cache bypass theo điều kiện (
proxy_cache_bypass).
Microcaching: cache nội dung động trong thời gian rất ngắn (1-10s) để hấp thụ traffic spike mà vẫn giữ tính "gần real-time".
Compression hiện đại - nội dung mới:
Gzip vẫn phổ biến nhưng Brotli cho tỷ lệ nén tốt hơn 15-20% với text/HTML/CSS/JS, và Zstandard (zstd) đang được áp dụng cho tốc độ nén/giải nén nhanh hơn ở edge.
Cần build NGINX với module
ngx_brotli/zstd(không có sẵn trong OSS mặc định, phải compile thêm hoặc dùng image đã tích hợp).
Bài tập:
Cài proxy cache, đo tốc độ trước/sau bằng
wrkhoặck6.Cấu hình microcaching cho một API động.
So sánh hiệu quả nén giữa Gzip, Brotli, Zstd trên cùng một tập file tĩnh.
Module 5: Security & Zero Trust (Ngày 10-12)
Xác thực:
HTTP Basic Authentication.
Tích hợp OIDC/OAuth2 (qua
oauth2-proxyđặt trước NGINX, hoặcauth_jwtcủa NGINX Plus).mTLS (mutual TLS) - xác thực client certificate, dùng cho service-to-service internal.
Web Application Firewall (WAF):
ModSecurity v3 (libmodsecurity + connector cho NGINX) - bản OSS.
F5 NGINX App Protect WAF - bản thương mại, hiệu năng cao hơn, tích hợp signature update tự động.
Cấu hình rule set OWASP Core Rule Set (CRS), tuning để giảm false positive.
Bảo vệ tầng ứng dụng:
Security headers chuẩn 2026:
Content-Security-Policy,Strict-Transport-Security,X-Content-Type-Options,Permissions-Policy.Rate limiting kết hợp fail2ban để tự động ban IP có hành vi bất thường ở tầng hệ điều hành.
SSL/TLS Hardening:
- Tắt TLS 1.0/1.1, ưu tiên TLS 1.3; disable cipher yếu; OCSP Stapling bắt buộc cho production.
Bài tập:
Bảo vệ một thư mục admin bằng Basic Auth + IP whitelist.
Cài ModSecurity với OWASP CRS, thử tấn công SQLi/XSS giả lập và xem WAF chặn.
Cấu hình mTLS cho một internal API.
Chạy security header scan và đạt điểm A trên các công cụ kiểm tra header bảo mật.
Module 6: F5 NGINX Plus & Tính năng nâng cao (Ngày 13-14)
Các tính năng nâng cao (NGINX Plus):
Live Activity Monitoring (dashboard real-time).
Session Persistence nâng cao, Active Health Checks chi tiết (HTTP/TCP/gRPC).
Key-Value Store - dùng để lưu trạng thái động (ví dụ danh sách IP bị ban) mà không cần reload.
API quản trị: dùng NGINX Plus API để thay đổi upstream server theo thời gian thực (thêm/xoá backend mà không downtime).
njs nâng cao: xử lý logic phức tạp hơn - custom auth, response transformation, streaming module.
HLS & DASH: streaming media qua NGINX Plus.
Bài tập:
Dùng Key-Value Store để quản lý danh sách IP bị chặn động.
Thêm/xoá server trong upstream qua API mà không cần reload.
Viết njs script xử lý logic A/B testing dựa trên cookie.
Module 7: Tích hợp Ứng dụng Nâng cao (Ngày 15-16)
FastCGI/uWSGI/PHP-FPM: kết nối NGINX với Django, Flask, Laravel/PHP.
WebSocket: hỗ trợ giao tiếp hai chiều (chat, real-time dashboard).
Server-Sent Events (SSE): cấu hình buffering phù hợp cho streaming response.
gRPC & HTTP/3 cho ứng dụng: lưu ý về cách backend cần hỗ trợ để tận dụng hết lợi ích QUIC.
Bài tập:
Cấu hình NGINX làm reverse proxy cho ứng dụng Django/Flask qua uWSGI.
Cấu hình WebSocket cho app chat, kiểm tra kết nối không bị timeout giữa chừng.
Thử nghiệm SSE endpoint và kiểm tra buffering không làm delay dữ liệu.
Module 8: Observability - Monitoring, Logging, Tracing (Ngày 17-18)
Log Format:
- Custom log format, chuyển sang structured JSON logging để dễ ingest vào hệ thống log tập trung.
Metrics với Prometheus:
Dùng
nginx-prometheus-exporter(cho OSS) hoặc modulestub_status/API (Plus) để expose metrics.Xây dashboard Grafana theo dõi: request rate, error rate, latency percentile (p50/p95/p99), upstream health.
Distributed Tracing:
- Tích hợp OpenTelemetry (qua module
otelhoặc njs) để trace request xuyên suốt từ NGINX tới backend - quan trọng trong kiến trúc microservices.
- Tích hợp OpenTelemetry (qua module
ELK/Loki Stack: vẫn hữu ích cho log search/audit, dùng song song với Prometheus (metrics) và OpenTelemetry (traces) - mô hình quan sát 3 trụ cột (logs, metrics, traces).
Bài tập:
Cấu hình log JSON, đẩy vào Loki hoặc ELK.
Cài
nginx-prometheus-exporter, dựng dashboard Grafana cơ bản.Thử tích hợp OpenTelemetry, xem trace của một request đi qua NGINX → backend.
Module 9: Troubleshooting & Performance Tuning (Ngày 19-20)
Debugging:
Error log,
strace/gdbđể debug worker process.Debug build với
NGX_QUIC_DEBUG_*macro khi troubleshoot HTTP/3.
Performance Tuning:
worker_processes auto,worker_connections,sendfile,tcp_nopush,tcp_nodelay.Buffer và timeout tuning (
proxy_buffers,client_body_timeout...).Linux kernel tuning:
somaxconn, file descriptor limits,net.core.rmem_max/wmem_maxcho QUIC (UDP throughput).
Load testing: dùng
k6,wrk, hoặcvegetađể benchmark trước khi go-live, mô phỏng traffic thật.Bài tập:
Tìm và sửa một lỗi cấu hình cố ý (bài tập debug).
Tối ưu NGINX để chịu tải cao hơn, đo trước/sau bằng
k6.Tune kernel parameters và benchmark lại kết nối QUIC.
Module 10: Containerization & Cloud Native (Ngày 21-23)
Docker:
- Build image NGINX tối ưu (multi-stage, base image nhỏ/distroless) chứa app + NGINX.
Kubernetes - Cập nhật quan trọng 2026 (khác hoàn toàn với syllabus gốc):
Ingress-NGINX (dự án cộng đồng
kubernetes/ingress-nginx) đã chính thức EOL vào tháng 3/2026 - không còn release, bugfix, hay vá bảo mật. Đây là thông tin bắt buộc phải biết nếu bạn đang hoặc sắp vận hành production trên K8s.Phân biệt rõ 2 dự án hay bị nhầm tên:
Ingress-NGINX (cộng đồng,
kubernetes/ingress-nginx) → đã EOL.F5 NGINX Ingress Controller (
nginx/kubernetes-ingress, do F5 duy trì) → vẫn được phát triển tích cực, dùng CRD (VirtualServer,Policy,TransportServer) thay vì annotation rời rạc.
Xu hướng dài hạn: Gateway API đang thay thế Ingress API (Ingress API hiện đã "feature-frozen"). NGINX Gateway Fabric là implementation Gateway API chính thức từ NGINX.
Lộ trình khuyến nghị: nếu đang dùng Ingress-NGINX cộng đồng → di chuyển sang F5 NGINX Ingress Controller (ít công sức nhất, có tool/migration guide hỗ trợ mapping annotation) hoặc đánh giá Gateway API nếu muốn đầu tư dài hạn.
Bài tập:
Build Docker image tối ưu chứa NGINX + ứng dụng.
Kiểm tra xem cluster hiện tại (nếu có) có đang dùng Ingress-NGINX cộng đồng không (
kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx).Triển khai thử F5 NGINX Ingress Controller hoặc NGINX Gateway Fabric trong một cluster test, viết một
VirtualServerCRD hoặcHTTPRoute(Gateway API) cơ bản.
Module 11: Infrastructure as Code & CI/CD cho NGINX (Ngày 24-25)
Quản lý config bằng code:
Ansible hoặc Terraform để provision NGINX config nhất quán qua nhiều môi trường.
GitOps: lưu config trong Git, review qua Pull Request trước khi deploy.
Kiểm thử config trong CI:
nginx -tnhư một bước bắt buộc trong pipeline.Test config bằng container ẩn (spin up NGINX trong Docker, chạy integration test) trước khi merge.
Chiến lược deploy an toàn:
Blue-green deployment, canary release cho chính tầng NGINX/Ingress.
Rolling reload không downtime (
nginx -s reloadgiữ connection cũ).
Bài tập:
Viết Ansible playbook để deploy config NGINX ra 2 server.
Tạo pipeline CI (GitHub Actions/GitLab CI) chạy
nginx -t+ test tự động mỗi khi có PR sửa config.Mô phỏng canary release: 90% traffic vào version cũ, 10% vào version mới, theo dõi metrics trước khi full rollout.
Module 12: Capstone Project - Xây dựng Production Stack hoàn chỉnh (Ngày 26-28)
Kết hợp toàn bộ kiến thức để dựng một hệ thống thực tế:
NGINX làm edge/reverse proxy hỗ trợ HTTP/2 + HTTP/3.
Load balancing tới nhiều backend với health check chủ động.
WAF (ModSecurity/CRS) + rate limiting + mTLS cho internal API.
Caching layer (proxy cache + Brotli/Zstd compression).
Observability đầy đủ: Prometheus + Grafana + OpenTelemetry trace.
Triển khai trên Kubernetes dùng F5 NGINX Ingress Controller hoặc Gateway API.
Toàn bộ config được quản lý qua Git + pipeline CI kiểm thử tự động.
Deliverable: một bản kiến trúc (diagram) + repo config + báo cáo load test (
k6) chứng minh hệ thống chịu được tải mục tiêu.