Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "CNTT" các nội dung bạn quan tâm.

12. Tổng quan Nginx trong kiến trúc Web Server

ICT

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