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.

14. Cấu trúc thư mục và file cấu hình Nginx

ICT

1. Vì sao phải hiểu cấu trúc cấu hình Nginx?

Một trong những nguyên nhân phổ biến khiến cấu hình Nginx trở nên:

  • Rối rắm

  • Khó debug

  • Khó bàn giao

là do:

Không hiểu rõ Nginx đọc file cấu hình theo cách nào.

Nếu không nắm cấu trúc:

  • Thêm website sẽ rất lúng túng

  • Sửa một chỗ có thể ảnh hưởng toàn hệ thống

  • Dễ tạo cấu hình chồng chéo, khó kiểm soát

Bài này giúp bạn hiểu – không phải ghi nhớ – cấu trúc cấu hình Nginx.


2. Thư mục cấu hình chính của Nginx

Toàn bộ cấu hình Nginx nằm tại:

/etc/nginx/

Các thành phần quan trọng:

Không phải thư mục nào cũng cần chỉnh sửa trong giai đoạn đầu.


3. File nginx.conf – cấu hình gốc

3.1. Vai trò của nginx.conf

nginx.conf là file:

  • Được Nginx đọc đầu tiên

  • Khai báo các block cấp cao:

    • events

    • http

Thông thường, không cần chỉnh sửa nhiều trong file này khi mới triển khai.


3.2. Nội dung quan trọng cần biết

Trong nginx.conf, bạn sẽ thấy các dòng như:

Điều này có nghĩa:

Nginx đọc cấu hình từ nhiều file, không chỉ một file duy nhất.


4. sites-available và sites-enabled – nền tảng quản lý website

4.1. sites-available

/etc/nginx/sites-available/ 
  • Chứa tất cả cấu hình website

  • Mỗi website = một file

  • Có thể tồn tại nhưng chưa được kích hoạt


4.2. sites-enabled

/etc/nginx/sites-enabled/ 
  • Chứa các symlink trỏ tới sites-available

  • File nào nằm ở đây → website đó đang hoạt động

Nguyên tắc:

Không đặt trực tiếp file cấu hình website vào sites-enabled.


4.3. Kích hoạt / vô hiệu website

  • Kích hoạt:

    sudo ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/
  • Vô hiệu:

    sudo rm /etc/nginx/sites-enabled/site.conf

Cách làm này giúp:

  • Bật/tắt website nhanh

  • Không mất file cấu hình gốc


5. conf.d – cấu hình bổ sung toàn cục

 
/etc/nginx/conf.d/ 
  • Dùng cho:

    • Cấu hình chung

    • Cấu hình bổ trợ

  • Không nên đặt virtual host ở đây

Trong loạt bài này:

conf.d chỉ dùng khi thật sự cần cấu hình dùng chung.


6. snippets – tái sử dụng cấu hình

/etc/nginx/snippets/ 
  • Chứa các đoạn cấu hình dùng lại nhiều lần

  • Ví dụ:

    • Cấu hình SSL

    • Cấu hình security header

    • Cấu hình FastCGI

Ưu điểm:

  • Tránh lặp cấu hình

  • Dễ chỉnh sửa đồng loạt


7. modules-enabled – module mở rộng

/etc/nginx/modules-enabled/ 
  • Chứa các module Nginx đã bật

  • Thường không cần chỉnh thủ công

Nguyên tắc:

Không bật module nếu không biết rõ nó dùng để làm gì.


8. Thứ tự Nginx đọc cấu hình

Tóm tắt luồng đọc cấu hình:

  1. nginx.conf

  2. modules-enabled/*.conf

  3. conf.d/*.conf

  4. sites-enabled/*

Điều này giải thích vì sao:

  • Một cấu hình ở conf.d có thể ảnh hưởng toàn hệ thống

  • Một lỗi trong sites-enabled có thể làm Nginx không reload được


9. Tư duy tổ chức cấu hình Nginx cho production

Trong loạt bài này, chúng ta áp dụng:

  • Một website → một file trong sites-available

  • Không trộn cấu hình nhiều website

  • Cấu hình dùng chung → snippets

  • Không chỉnh nginx.conf nếu chưa cần

Nguyên tắc:

Cấu hình dễ đọc quan trọng hơn cấu hình ngắn.


10. Ví dụ cấu trúc cho nhiều website

 

Cấu trúc này giúp:

  • Quản lý nhiều website dễ dàng

  • Bàn giao rõ ràng

  • Mở rộng an toàn


11. Những sai lầm phổ biến về cấu trúc cấu hình

  • Dồn tất cả vào một file

  • Chỉnh trực tiếp nginx.conf

  • Đặt virtual host trong conf.d

  • Không test cấu hình sau khi chỉnh

Những sai lầm này khiến:

Cấu hình Nginx trở thành “mê cung”.


12. Chuẩn bị cho bước tiếp theo

Sau bài này, bạn cần:

  • Hiểu rõ vai trò từng thư mục

  • Không còn “sợ” cấu hình Nginx

  • Sẵn sàng tạo virtual host đầu tiên


13. Bài tiếp theo

Trong Bài 15, chúng ta sẽ triển khai nội dung quan trọng tiếp theo:

Tạo virtual host (server block) chuẩn production

Bài này sẽ hướng dẫn:

  • Tạo website riêng biệt

  • Gán domain

  • Chuẩn bị cho PHP và SSL