Tối ưu hiệu suất Nginx: 10 cấu hình tăng tốc website đáng kể

Minh họa nội dung bài viết
Minh họa nội dung

Nginx là một trong những web server phổ biến nhất thế giới, phục vụ hơn 30% trang web trên Internet. Được tạo bởi Igor Sysoev năm 2004, Nginx vượt trội trong việc xử lý kết nối đồng thời với mức tiêu thụ tài nguyên thấp. Việc tối ưu cấu hình Nginx có thể tăng tốc website đáng kể, giảm tải server và cải thiện trải nghiệm người dùng.

Nginx sử dụng mô hình event-driven, khác với Apache’s process/thread model. Thay vì tạo một process hoặc thread cho mỗi kết nối, Nginx sử dụng một số lượng worker process cố định, mỗi worker xử lý hàng nghìn kết nối thông qua event loop. Đây là lý do Nginx tiêu thụ ít RAM và CPU hơn khi tải cao.

10 cấu hình tối ưu hiệu suất Nginx

Dưới đây là 10 cấu hình quan trọng để khai thác tối đa hiệu suất của Nginx:

  1. worker_processes auto; — Đặt số worker process bằng số CPU cores để tận dụng đa nhân. Khi đặt auto, Nginx tự động phát hiện số cores.
  2. worker_connections 4096; — Tăng số kết nối tối đa mỗi worker từ mặc định 512 lên 4096. Kết hợp với worker_processes auto, tổng kết nối có thể đạt hàng trăm nghìn.
  3. keepalive_timeout 65; — Giữ kết nối HTTP alive để tái sử dụng, giảm overhead TCP handshake và TLS handshake.
  4. gzip on; — Nén gzip response giảm 70-90% kích thước HTML/CSS/JS, tiết kiệm bandwidth đáng kể.
  5. open_file_cache max=1000; — Cache thông tin file descriptor để tránh hệ thống call lặp lại cho cùng một file.
  6. sendfile on; — Dùng kernel sendfile để truyền file trực tiếp từ disk ra network mà không qua user space.
  7. tcp_nopush on; — Gửi tất cả header cùng một gói thay vì từng phần, giảm số gói TCP cần thiết.
  8. access_log off; — Tắt access log cho các endpoint không cần thiết (health check, webhook) để giảm I/O.
  9. proxy_buffering on; — Đệm response từ upstream server để ổn định throughput và bảo vệ b
    Minh họa nội dung bài viết
    Minh họa nội dung

    > — Rate limiting bảo vệ API khỏi traffic spike và DDoS nhẹ.

Cấu hình gzip chi tiết

Gzip là cấu hình ảnh hưởng lớn nhất đến tốc độ tải trang. Cấu hình tối ưu:

gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;

gzip_comp_level 6 là điểm cân bằng tốt giữa CPU usage và tỷ lệ nén. gzip_min_length 1024 tránh nén các response nhỏ (overhead nén lớn hơn lợi ích). gzip_types chỉ nén các MIME type có thể nén hiệu quả — hình ảnh và video không nên nén bằng gzip vì chúng đã nén sẵn.

Proxy caching cho API và static content

Nginx có thể đóng vai trò reverse proxy với cache nội bộ, giảm đ

Minh họa nội dung bài viết
Minh họa nội dung

e/nginx levels=1:2 keys_zone=api_cache:10m max_size=1g inactive=60m;

location /api/ {
proxy_cache api_cache;
proxy_cache_valid 200 5m;
proxy_pass http://backend;
}

Cấu hình này lưu response 200 trong 5 phút, phục vụ từ cache mà không cần truy backend. Với API có ít thay đổi dữ liệu, hiệu suất tăng 10-50 lần. proxy_cache_valid cho phép đặt thời gian cache khác nhau theo từng loại response: proxy_cache_valid 200 302 1h; cho cached pages, proxy_cache_valid 404 1m; cho cached error pages.

Tối ưu SSL/TLS

SSL/TLS là thành phần bắt buộc nhưng ảnh hưởng đến tốc độ. Các cấu hình tối ưu:

  • ssl_protocols TLSv1.2 TLSv1.3; — Chỉ dùng TLS 1.2+ (1.3 nhanh hơn 30% so với 1.2 nhờ 1-RTT handshake).
  • ssl_session_cache shared:SSL:10m; — Cache SSL session tái sử dụng, tránh toàn bộ handshake lại.
  • ssl_session_timeout 10m; — Thời gian cache session. Đặt quá dài có thể gây vấn đề bảo mật.
  • ssl_stapling on; — OCSP stapling giảm thời gian xác minh certificate bằng cách cung cấp sẵn response.
  • ssl_ciphers: Chỉ dùng cipher hiện đại, loại bỏ các cipher cũ dễ bị tấn công.

Giám sát và benchmark

Sau khi cấu hình, cần đo lường hiệu quả. Sử dụng nghttp2 hoặc Locust để benchmark:

ab -n 10000 -c 100 http://your-server.com/

So sánh các metrics: requests/second, time per request, và percentage of requests under 100ms/500ms. Hướng dẫn chính thức của Nginx cung cấp thêm thông tin về từng directive và ví dụ cấu hình.

Kết luận

10 cấu hình trên giúp Nginx xử lý traffic cao hơn với ít tài nguyên hơn. Bắt đầu từ gzip và worker_processes — hai cấu hình có tác động lớn nhất. Sau đó lần lượt áp dụng các cấu hình còn lại. Đừng quên benchmark trước và sau mỗi thay đổi để đo lường cải thiện thực tế. Mỗi website có đặc thù riêng, vì vậy hãy thử nghiệm trên môi trường staging trước khi áp dụng production. Nginx là công cụ mạnh mẽ, nhưng cấu hình đúng mới là chìa khóa để phát huy tối đa hiệu suất.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

macOS Sequoia: Mẹo tối ưu hóa và tính năng ẩn

macOS Sequoia (15.x) mang đến nhiều tính năng mới đáng chú ý, từ iPhone mirroring đến cải tiến Safari. Tuy nhiên, nhiều người dùng chưa khai thác hết tiềm năng…

Xem thêm

Cài Đặt Home Assistant: Quản Lý Nhà Thông Minh Mã Nguồn Mở

Home Assistant là nền tảng tự động hóa nhà mã nguồn mở, chạy cục bộ trên Raspberry Pi hoặc máy chủ Linux. Bài hướng dẫn này giúp bạn cài đặt…

Xem thêm
Minh họa luồng git stash: working directory lưu vào refs/stash

Git Stash: Quản lý công việc đang làm mà không cần commit

git stash là lệnh thiết yếu trong Git — cho phép lưu tạm trạng thái working directory và index khi cần chuyển sang branch khác mà không cần commit dở…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất