NGINX là gì? Vì sao developer nào cũng nên biết NGINX?
Nếu bạn từng deploy một website hay API lên server thì gần như chắc chắn bạn đã dùng NGINX, dù có thể không trực tiếp cấu hình nó.
NGINX là một trong những thành phần quan trọng nhất trong kiến trúc web hiện đại.
Bài viết này giúp bạn hiểu:
- NGINX là gì?
- Vì sao NGINX ra đời?
- NGINX giúp gì cho hệ thống?
- NGINX hoạt động như thế nào?
- Và các ví dụ NGINX thực tế trong production
1. NGINX là gì?
NGINX là một phần mềm mã nguồn mở, thường được sử dụng với các vai trò:
- Web Server
- Reverse Proxy
- Load Balancer (cân bằng tải)
- HTTP Cache
- SSL/TLS Gateway & Routing
Trong thực tế, NGINX thường đứng trước backend, nhận request từ client rồi xử lý hoặc chuyển tiếp vào các service phía sau như:
Laravel, Node.js, Go, Java, Python…
2. Mục đích NGINX ra đời
Trước năm 2000, các web server như Apache gặp nhiều hạn chế:
- Không chịu được nhiều kết nối đồng thời
- Tốn nhiều RAM & CPU khi traffic tăng
- Kiến trúc blocking (1 request = 1 thread)
Năm 2004, NGINX ra đời để giải bài toán C10K
Làm sao server xử lý 10.000 kết nối cùng lúc mà không bị nghẽn?
Giải pháp của NGINX:
- Kiến trúc event-driven, non-blocking
- Một worker xử lý hàng ngàn kết nối
- Không tạo thread/process cho mỗi request
➡️ Kết quả: nhanh – nhẹ – chịu tải cực tốt
3. NGINX giúp gì cho hệ thống?
- ⚡ Phục vụ file tĩnh cực nhanh (HTML, CSS, JS, ảnh, video)
- 🛡️ Reverse proxy: bảo vệ backend
- ⚖️ Load balancing: chia tải cho nhiều server
- 🧠 Cache: giảm tải cho application
- 💰 Xử lý nhiều kết nối với chi phí thấp
4. NGINX hoạt động như thế nào?
- Dùng kiến trúc event-driven
- Gồm:
- 1 master process (quản lý)
- N worker process (xử lý request)
- Worker xử lý non-blocking, không bị chặn IO
➡️ Vì vậy NGINX:
- Ít tốn RAM/CPU
- Chạy rất ổn khi traffic lớn
5. Vì sao developer nên biết NGINX?
Dù bạn là Backend, Fullstack, DevOps hay Frontend, bạn sẽ gặp NGINX rất thường xuyên:
- Deploy app → gần như luôn chạy sau NGINX
- Cấu hình domain, HTTPS (Let’s Encrypt)
- Debug lỗi request không tới backend
- Tối ưu performance (cache, gzip, rate limit)
- Phỏng vấn mid–senior → hay hỏi về NGINX
- Hiểu NGINX = hiểu kiến trúc hệ thống thực tế
6. Ví dụ NGINX trong thực tế (rất hay gặp)
Ví dụ 1: NGINX làm Web Server (phục vụ file tĩnh)
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
} 👉 Dùng cho:
- Website HTML/CSS/JS
- Frontend build (React/Vue/Angular)
Ưu điểm: rất nhanh, rất nhẹ, không cần backend.
Ví dụ 2: NGINX làm Reverse Proxy cho backend
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
} 👉 Dùng khi:
- Backend chạy port riêng (Node, Laravel, Go…)
Ý nghĩa:
Client không truy cập trực tiếp backend → tăng bảo mật & ổn định.
Ví dụ 3: NGINX làm Load Balancer
upstream backend_servers {
server 10.0.0.1:3000;
server 10.0.0.2:3000;
server 10.0.0.3:3000;
}
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://backend_servers;
}
} 👉 Dùng khi:
- Có nhiều backend instance
- Cần chịu tải lớn
NGINX tự chia request, backend chết thì loại ra.
Ví dụ 4: NGINX xử lý HTTPS (SSL termination)
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
}
} 👉 Backend không cần xử lý HTTPS, chỉ dùng HTTP nội bộ.
Ví dụ 5: Cache API bằng NGINX
proxy_cache_path /tmp/nginx_cache levels=1:2
keys_zone=my_cache:10m;
server {
listen 80;
server_name api.example.com;
location /api/ {
proxy_cache my_cache;
proxy_cache_valid 200 10m;
proxy_pass http://127.0.0.1:3000;
}
} 👉 Dùng khi:
- API đọc nhiều, ít thay đổi
- Muốn giảm tải backend
7. Ưu điểm của NGINX
- Hiệu năng cực cao
- Ít tốn RAM/CPU
- Phục vụ file tĩnh nhanh
- Reverse proxy & load balancer mạnh
- SSL/TLS termination tốt
- Dễ mở rộng (horizontal scaling)
- Miễn phí & mã nguồn mở
8. Nhược điểm của NGINX
- Cấu hình hơi khó lúc đầu
- Không có
.htaccessnhư Apache - Module động hạn chế
- Ít tính năng “out of the box”
9. Tóm lại
NGINX chỉ tập trung làm rất tốt 3 việc:
1️⃣ Phục vụ file tĩnh cực nhanh
2️⃣ Đứng trước backend như “cửa chắn”
3️⃣ Chia tải cho nhiều server backend
Ví dụ dễ hình dung
Bạn mở quán phở:
- Khách vào → gặp thu ngân (NGINX)
- Thu ngân:
- Thu tiền (HTTPS)
- Đưa menu ngay (file tĩnh)
- Gửi order vào bếp (request vào backend)
- Đầu bếp (Node/Laravel/Go) chỉ lo nấu
👉 NGINX = thu ngân siêu nhanh, siêu chịu áp lực
NGINX là thằng đứng ngoài cửa: nhận request, xử lý HTTPS, trả file nhanh và chuyển request vào đúng app.
Nhanh – nhẹ – khỏe → làm web là phải biết.
Leave a comment
Your email address will not be published. Required fields are marked *