“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
- Local: http://localhost:8000
- Public: http://<IP>: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é! 🧡