- vừa được xem lúc

Hướng dẫn sử dụng Nginx toàn tập: Deploy, Scale và Load Balancing hiệu quả

0 0 4

Người đăng: mâyxám

Theo Viblo Asia

“Viết xong code rồi, deploy kiểu gì?”

“Server chạy ok, nhưng truy cập từ Internet không ổn?”

“Traffic tăng bất ngờ, phải làm sao?”

Triển khai và vận hành thực ra không khó – nhất là khi đã có công cụ mạnh mẽ như Nginx. Lúc đầu mình cũng mò từng bước, sau đó nhận ra nếu biết cách dùng rồi kết hợp với những tool hiện đại – deploy sẽ dễ như ăn kẹo.


✅ Trong bài này bạn sẽ học được:

  • Nginx là gì và tại sao nó được ưa chuộng?
  • Cách deploy ứng dụng FastAPI bằng Nginx
  • Cách thực hiện load balancing thanh lịch để chia tải
  • Sử dụng proxy cache để tăng hiệu năng
  • Và sử dụng ServBay để thiết lập môi trường dev chỉ với 1 cú click!

Nginx – siêu thị front‑end thông minh

Bạn có thể tưởng tượng Nginx như một “tiếp tân thông minh”:

  • Có thể phục vụ tĩnh nội dung (Web server)
  • Xác định người dùng muốn truy cập dịch vụ nào (reverse proxy)
  • Khi lượng user đông, tự chia tải hợp lý (load balancing)

Với khả năng xử lý HTTP, TCP/UDP, proxy mail, cache, concurrency cao… Nginx là nền tảng không thể thiếu trong hầu hết kiến trúc web hiện đại.


🛠️ Cách dùng Nginx deploy FastAPI

Step 1: Chạy FastAPI tại localhost

git clone https://github.com/HATAKEkakshi/Todo.git
cd Todo pip install -r requirements.txt uvicorn main:app --host 0.0.0.0 --port 8000

Chỉ mới “chạy được”, chưa tính là “deploy chuẩn”.

Step 2: Chạy dưới dạng dịch vụ hệ thống

Tạo file service để FastAPI tự động chạy lại khi chết hoặc reboot:

[Unit]
Description=FastAPI Service
After=network.target [Service]
WorkingDirectory=/root/Todo
ExecStart=/usr/bin/python3 -m uvicorn main:app --host 127.0.0.1 --port 8000
Restart=always [Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload sudo systemctl enable fastapi sudo systemctl start fastapi

Step 3: Cấu hình Nginx làm reverse proxy

Tạo config:

server { listen 80; server_name <yourIP>; location / { proxy_pass http://127.0.0.1:8000; ... }
}
sudo nginx -t sudo systemctl restart nginx

Truy cập http://<IP>/docs để kiểm tra swagger.

Step 4: Cân load khi traffic tăng

Cấu hình upstream:

upstream myapp { server 192.168.1.100:8000; server 192.168.1.101:8000; server 192.168.1.102:8000;
}
server { listen 80; server_name <yourIP>; location / { proxy_pass http://myapp; ... }
}

Nginx sẽ tự load balancing theo round‑robin.


⚡ Tăng tốc bằng proxy cache

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=custom_cache:10m inactive=60m; location / { proxy_pass http://127.0.0.1:8000; proxy_cache custom_cache; add_header X-Proxy-Cache $upstream_cache_status;
}

Theo response header, bạn sẽ biết cache HIT / MISS / EXPIRED / BYPASS.


ServBay là gì? Tại sao nên dùng?

Deploy Nginx và các dịch vụ backend khá lằng nhằng, nhất là khi phải cross‑platform hoặc nhiều dự án. Mình chuyển qua dùng ServBay – một công cụ quản lý môi trường local hiệu quả:

  • Hỗ trợ đa instance PHP, auto install dependencies, config Nginx tự động
  • Mới ra bản Windows, kèm UI quản lý Nginx
  • Dễ dùng trên macOS và Windows, cực phù hợp cho dev full-stack và local deploy

Nếu bạn đang đau đầu vì file config hay lo startup dịch vụ từng project, thì ServBay giúp bạn giải quyết hết.


✨ Viết ở cuối

Nhiều người sợ deploy vì nghĩ nó phức tạp. Thực ra nếu hiểu từng dòng config giải quyết vấn đề gì – deploy sẽ trở nên đơn giản và dễ nhớ.

Nắm Nginx giúp bạn xử lý:

  • Web tĩnh ✔
  • API phản hồi ✔
  • Load balancing ✔
  • Proxy cache ✔

Mình viết bài này mong bạn hiểu “tại sao config như vậy”, chứ không chỉ là “copy‑paste”. Nhưng nếu bạn vẫn cảm thấy rối, hoặc muốn triển khai nhanh – hãy thử ServBay, nó giúp bạn setup toàn bộ local stack dễ như chơi.


📌 Muốn học thêm về deploy Python, Nginx + Gunicorn, Supervisor, hoặc nâng cao với SSL/TLS?

Comment cho mình – mình sẽ tiếp tục chia sẻ trải nghiệm thực chiến từng bước nhé! 🧡

Bình luận

Bài viết tương tự

- vừa được xem lúc

Đề thi interview DevOps ở Châu Âu

Well. Chào mọi người, mình là Rice - một DevOps Engineers ở đâu đó tại Châu Âu.

0 0 110

- vừa được xem lúc

In calculus, love also means zero.

Mình nhớ hồi năm 2 đại học, thầy giáo môn calculus, trong một giây phút ngẫu hứng, đã đưa ra cái definition này. Lúc đấy mình cũng không nghĩ gì nhiều.

0 0 78

- vừa được xem lúc

Chuyện thay đổi

Thay đổi là một thứ gì đó luôn luôn đáng sợ. Cách đây vài tháng mình có duyên đi làm cho một banking solution tên là X.

0 0 63

- vừa được xem lúc

Pet vs Cattle - Thú cưng và gia súc

Khái niệm. Pets vs Cattle là một khái niệm cơ bản của DevOps. Bài viết này sẽ nói về sự phát triển của các mô hình dịch vụ từ cốt lõi Pets and Cattle. 1.

0 0 49

- vừa được xem lúc

Git workflow được Google và Facebook sử dụng có gì hay ho

Với developer thì Git hẳn là công cụ rất quen thuộc và không thể thiếu rồi. Thế nhưng có mấy ai thực sự hiểu được Git.

0 0 101

- vừa được xem lúc

Kubernetes - Học cách sử dụng Kubernetes Namespace cơ bản

Namespace trong Kubernetes là gì. Tại sao nên sử dụng namespace.

0 0 133