Tác giả

Oct 22, 2025 • 4:45 PM

Tác giả: Linh osimi

Nginx: Không chỉ là reverse proxy — mà là “người gác cổng” thông minh của hệ thống bạn

Giới thiệu: Khi hệ thống bạn có… quá nhiều cửa

Tưởng tượng hệ thống của bạn là một tòa nhà hiện đại: có phòng API, phòng static files, phòng WebSocket, phòng admin, và cả một “phòng bí mật” dành cho health check. Mỗi phòng có quy tắc riêng — ai được vào, ai không, vào lúc nào, và mang theo gì.

Nginx chính là người gác cổng — lịch sự, nhanh nhẹn, và cực kỳ thông minh. Nó không chỉ mở cửa, mà còn biết ai là ai, muốn đi đâu, và có nên cho vào hay không.

Nginx như người gác cổng của hệ thống
Nginx — người gác cổng không ngủ, luôn phân luồng và bảo vệ hệ thống bạn.

Vậy Nginx thực sự là gì?

Nginx (đọc là “engine-x”) là một máy chủ web mã nguồn mở, nổi tiếng với hiệu năng cao, tiêu thụ ít tài nguyên và khả năng xử lý hàng chục nghìn kết nối đồng thời nhờ kiến trúc event-driven.

Nhưng trong thế giới DevOps, Nginx hiếm khi “chỉ” là web server. Nó thường đóng vai trò:

  • Reverse Proxy: Đón request từ client, chuyển đến backend phù hợp (Node.js, Python, Java…).
  • Load Balancer: Phân phối traffic đều giữa nhiều server — tránh quá tải.
  • SSL Terminator: Xử lý HTTPS ở cổng vào, giải mã, rồi gửi request dạng HTTP vào nội bộ — giúp backend nhẹ gánh.
  • Cache & Compression: Tăng tốc độ phản hồi bằng cách cache nội dung tĩnh hoặc nén dữ liệu.

Cấu hình Nginx — ngôn ngữ của “người gác cổng”

Cấu hình Nginx đơn giản đến bất ngờ — chỉ cần vài khối serverlocation, bạn đã có thể điều khiển toàn bộ luồng traffic.

Ví dụ: Một cấu hình “gác cổng” thông minh:

server {
    listen 443 ssl;
    server_name api.myapp.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # Ai vào /admin? Chỉ IP nội bộ!
    location /admin {
        allow 192.168.1.0/24;
        deny all;
        proxy_pass http://backend-admin;
    }

    # API công khai — nhưng giới hạn tốc độ
    location /api {
        limit_req zone=api burst=10;
        proxy_pass http://backend-api;
    }

    # Static files — cache 1 giờ
    location /static {
        expires 1h;
        root /var/www;
    }
}

Chỉ trong vài dòng, Nginx đã:

  • Bảo vệ khu vực admin
  • Chống flood API
  • Tăng tốc static assets
  • Xử lý SSL một cách thanh lịch

Nginx trong Kubernetes: Ingress Controller

Khi chạy ứng dụng trên Kubernetes, Nginx thường xuất hiện dưới dạng Nginx Ingress Controller — một “gác cổng tập trung” cho toàn cluster.

Thay vì mở từng Service với LoadBalancer (tốn kém), bạn chỉ cần một Ingress resource:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: app.example.com
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: api-svc
            port: { number: 80 }
      - path: /web
        pathType: Prefix
        backend:
          service:
            name: web-svc
            port: { number: 80 }

Nginx Ingress sẽ tự động sinh cấu hình reverse proxy dựa trên định nghĩa này — DevOps dream!

Nginx Ingress trong Kubernetes
Nginx Ingress — “gác cổng” cho toàn bộ Kubernetes cluster.

Một vài mẹo “gác cổng” chuyên nghiệp

  • Luôn bật server_tokens off; — đừng để lộ phiên bản Nginx (tránh bị khai thác).
  • Dùng map để tạo biến linh hoạt — ví dụ: ghi log theo user-agent.
  • Kết hợp với Let’s Encrypt + Certbot để tự động gia hạn SSL.
  • Giám sát Nginx bằng Prometheus + Grafana — theo dõi số request, lỗi 5xx, latency…

Kết luận: Đừng xem nhẹ “người gác cổng”

Nginx có thể trông đơn giản — chỉ là một file cấu hình vài chục dòng. Nhưng đằng sau đó là cả một hệ thống kiểm soát, bảo vệ và tối ưu hóa traffic.

Hãy học cách “nói chuyện” với Nginx. Vì một ngày nào đó, chính nó sẽ cứu hệ thống bạn khỏi một cơn DDoS, một lỗi cấu hình, hay đơn giản — giúp ứng dụng của bạn chạy nhanh hơn 200ms.

Và trong thế giới DevOps, 200ms có thể là cả một vũ trụ.