1. Vì sao cần hiểu Nginx trước khi cài đặt?
Rất nhiều hệ thống gặp các vấn đề như:
Website chậm không rõ nguyên nhân
PHP lỗi nhưng lại đi debug Nginx
Cấu hình chồng chéo, khó bảo trì
Mỗi lần sửa config đều “cầu may”
Nguyên nhân phổ biến không phải do Nginx kém, mà do:
Không hiểu rõ Nginx đang làm gì và không nên làm gì.
Trước khi cài đặt và cấu hình, cần xác định đúng vai trò của Nginx trong kiến trúc tổng thể.
2. Nginx là gì trong hệ thống Web Server?
Trong kiến trúc mà loạt bài này triển khai, Nginx giữ vai trò:
Web Server / Reverse Proxy ở lớp frontend
Nginx không phải:
Application server
Nơi xử lý logic nghiệp vụ
Công cụ chạy PHP
Nginx chỉ làm đúng một việc:
Nhận request → xử lý ở mức web → chuyển tiếp đúng nơi cần xử lý
3. Vị trí của Nginx trong kiến trúc tổng thể
Nhắc lại sơ đồ kiến trúc đã thống nhất:

Trong sơ đồ này:
Nginx là cổng vào duy nhất từ Internet
Mọi request đều phải đi qua Nginx
Các lớp phía sau không expose trực tiếp
4. Nhiệm vụ chính của Nginx
4.1. Nhận và xử lý request từ Internet
Lắng nghe port 80 / 443
Phân biệt domain (virtual host)
Ghi log truy cập và lỗi
4.2. Phục vụ nội dung tĩnh
Nginx xử lý rất tốt:
HTML
CSS
JavaScript
Hình ảnh
File tĩnh
Nguyên tắc:
File tĩnh phải được Nginx xử lý, không chuyển qua PHP.
Điều này giúp:
Giảm tải PHP-FPM
Tăng tốc độ phản hồi
Hệ thống ổn định hơn
4.3. Chuyển request động sang PHP-FPM
Với request cần xử lý PHP:
Nginx không chạy PHP
Chỉ chuyển request qua FastCGI
Việc này giúp:
Tách biệt rõ trách nhiệm
Dễ kiểm soát lỗi
Dễ giới hạn tài nguyên từng lớp
4.4. Xử lý SSL / HTTPS
Nginx chịu trách nhiệm:
Bắt tay SSL
Áp dụng chứng chỉ
Cấu hình HTTPS chuẩn
PHP và database không cần biết SSL là gì.
5. Vì sao chọn Nginx cho Web Server production?
5.1. Hiệu năng và độ ổn định
Xử lý tốt concurrent connection
Ít tốn tài nguyên
Chạy ổn định trong thời gian dài
5.2. Cấu hình rõ ràng, kiểm soát tốt
File cấu hình dạng text
Có thể kiểm tra cú pháp trước khi reload
Reload không làm gián đoạn kết nối
5.3. Phù hợp cho nhiều website trên một server
Virtual host rõ ràng
Dễ quản lý nhiều domain
Dễ mở rộng hoặc tách website
6. Những việc KHÔNG nên giao cho Nginx
Để hệ thống dễ vận hành, cần xác định rõ:
Nginx không nên:
Chạy PHP trực tiếp
Xử lý logic nghiệp vụ
Thực hiện các script phức tạp
Làm thay việc của application
Nguyên tắc:
Nginx càng “thuần web” thì hệ thống càng ổn định.
7. Nginx và mối quan hệ với các thành phần khác
7.1. Nginx và PHP-FPM
Giao tiếp qua:
Unix socket
Hoặc TCP port nội bộ
Nginx gửi request, PHP-FPM trả kết quả
Hai service độc lập, restart không ảnh hưởng lẫn nhau
7.2. Nginx và firewall
Chỉ Nginx cần mở port ra Internet
PHP-FPM và database không mở port public
Firewall bảo vệ Nginx, Nginx bảo vệ các lớp phía sau.
8. Tư duy cấu hình Nginx cho production
Trong loạt bài này, cấu hình Nginx tuân theo tư duy:
Rõ ràng hơn là “ngắn gọn”
Tách từng website thành file riêng
Không gom tất cả vào một file lớn
Có log riêng cho từng site
Điều này giúp:
Debug nhanh
Bàn giao dễ
Mở rộng an toàn
Với multisites dùng chung source (riêng database), dùng chung file cấu hình, chung ssl rất quan trọng. Tiện cho bạn theo dõi, cấu hình.
9. Những sai lầm phổ biến khi dùng Nginx
Copy cấu hình “tối ưu” nhưng không hiểu
Dồn quá nhiều logic vào Nginx
Khá nhiều cấu hình có thể kiểm soát đơn giản tại Nginx, đừng bỏ qua. Nhưng bạn cần hiểu rõ bạn đang làm gì.
Không phân biệt file tĩnh và động
Debug PHP lỗi bằng cách sửa Nginx
Những sai lầm này khiến:
Nginx trở thành điểm nghẽn thay vì điểm mạnh.
10. Chuẩn bị trước khi cài đặt Nginx
Sau bài này, cần thống nhất:
Nginx chỉ làm web server
PHP chạy qua PHP-FPM
Mỗi website có cấu hình riêng
Không cài module không cần thiết
Khi tư duy đã rõ, việc cài đặt sẽ:
Nhanh
Ít sai
Ít phải sửa lại
11. Bài tiếp theo
Trong Bài 13, chúng ta sẽ bắt đầu triển khai cụ thể:
Cài đặt Nginx và kiểm tra hoạt động
Bài này sẽ hướng dẫn:
Cài Nginx đúng cách
Kiểm tra service
Hiểu cấu trúc file ngay từ đầu
- Đăng nhập để gửi ý kiến