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.

Bài 13. Chuẩn hóa cấu trúc cấu hình cho hàng trăm website

ICT

Bài này tóm tắt các bài trên lại thành chuẩn hóa các mục, các bước để cùng rà soát lại.

1. Vì sao “chuẩn hóa cấu trúc” quan trọng hơn tối ưu kỹ thuật

Khi hệ thống chỉ có vài website, việc cấu hình Nginx thường mang tính “thủ công”:

  • Tạo file nào cũng được,

  • Đặt ở đâu cũng được,

  • Sửa trực tiếp khi có lỗi.

Tuy nhiên, khi số lượng tăng lên hàng trăm website và web application, các vấn đề phát sinh không còn là hiệu năng hay TLS, mà là:

  • Không biết site nào thuộc nhóm nào.

  • Sợ sửa nhầm cấu hình của site khác.

  • Khó bàn giao cho người vận hành mới.

  • Mỗi lần thêm site mới là một lần “căng thẳng”.

Do đó, chuẩn hóa cấu trúc cấu hình là bước bắt buộc để hệ thống:

  • Có trật tự,

  • Dễ mở rộng,

  • Ít rủi ro vận hành.


2. Nguyên tắc thiết kế cấu trúc cấu hình cho quy mô lớn

Trước khi đi vào cấu trúc cụ thể, cần thống nhất các nguyên tắc sau:

  1. Mỗi website = một file cấu hình

  2. Phân nhóm theo bản chất sử dụng, không theo cảm tính

  3. Không trộn website và web app trong cùng nhóm

  4. Bật/tắt site bằng symlink, không xóa file

  5. Cấu trúc thư mục phải “tự nói lên ý nghĩa”


3. Cấu trúc thư mục chuẩn đề xuất

3.1. Tổng thể thư mục Nginx

 
/etc/nginx/
 ├── nginx.conf
 ├── conf.d/
 │
 ├── sites-available/
 │  ├── yte-co-so/        # Website cơ sở y tế
 │  ├── chuyen-nganh/     # Website chuyên ngành
 │  ├── webapp/           # Web application
 │  ├── external/         # Backend/website ngoài hệ thống
 │  └── maintenance/      # Bảo trì, thông báo sự cố
 │
 ├── sites-enabled/        # Chỉ chứa symlink
 │
 └── snippets/
    ├── backend/
    ├── ssl/
    ├── proxy/
    ├── headers/
    └── performance/

Cấu trúc này phản ánh trực tiếp cách anh nhìn hệ thống, không phải chỉ là nơi “để file”.


4. Chuẩn hóa theo từng nhóm website

4.1. Nhóm website cơ sở y tế (yte-co-so)

Đối tượng

  • Bệnh viện

  • Trung tâm y tế

  • Phòng khám

  • Trạm y tế

Ví dụ cấu hình

 
/etc/nginx/sites-available/yte-co-so/
 ├── benhviena.conf
 ├── benhvienb.conf
 ├── phongkham123.conf

Đặc điểm

  • Chủ yếu là CMS, website giới thiệu.

  • Ít logic phức tạp.

  • Có thể dùng chung template website thường.


4.2. Nhóm website chuyên ngành (chuyen-nganh)

Đối tượng

  • Website nghiệp vụ

  • Website chuyên môn

  • Website truyền thông nội bộ/ngành

Ví dụ

 
/etc/nginx/sites-available/chuyen-nganh/
 ├── qlcl.conf
 ├── ksnk.conf
 ├── dieuduong.conf

Đặc điểm

  • Có thể tích hợp API.

  • Có upload, báo cáo.

  • Timeout cao hơn website thường.


4.3. Nhóm web application (webapp)

Đối tượng

  • Hệ thống điều hành

  • Dashboard

  • Phần mềm quản trị bệnh viện

Ví dụ

 
/etc/nginx/sites-available/webapp/
 ├── qlcl-app.conf
 ├── khth-app.conf
 ├── nhansu-app.conf

Đặc điểm

  • Reverse proxy là bắt buộc.

  • Timeout dài.

  • Có thể có WebSocket.


4.4. Nhóm external (external)

Đối tượng

  • Proxy tới backend bên ngoài.

  • Dịch vụ của đối tác.

Ví dụ

 
/etc/nginx/sites-available/external/
 ├── partner-api.conf
 ├── thirdparty-app.conf

4.5. Nhóm maintenance (maintenance)

Đối tượng

  • Trang bảo trì

  • Trang thông báo khi backend lỗi

Ví dụ

 
/etc/nginx/sites-available/maintenance/
 ├── maintenance.conf
 ├── qms-down.conf

5. Chuẩn hóa tên file cấu hình

Tên file phải dễ đọc, dễ hiểu, không gây nhầm lẫn.

5.1. Quy ước đặt tên

  • Website thường:

    <domain>.conf
  • Web app:

    <ten-he-thong>-app.conf
  • WebSocket/API:

    <ten>-ws.conf

Ví dụ

  • benhvienabc.conf

  • qlcl-app.conf

  • realtime-ws.conf


6. Chuẩn hóa cách bật/tắt website

6.1. Bật website

 
ln -s /etc/nginx/sites-available/webapp/qlcl-app.conf \
      /etc/nginx/sites-enabled/qlcl-app.conf

6.2. Tắt website (không xóa file)

 
rm /etc/nginx/sites-enabled/qlcl-app.conf

Lợi ích:

  • Dễ rollback.

  • Giữ lịch sử cấu hình.


7. Ghi chú vận hành trong file cấu hình

Mỗi file cấu hình nên có header comment rõ ràng:

 
## # SITE: qlcl.example.com # TYPE: Web application # GROUP: webapp # BACKEND: backend-active.conf # NOTES: Failover supported ## 

Lợi ích:

  • Người mới đọc hiểu ngay.

  • Dễ audit.


8. Những sai lầm cần tránh

  • Đặt tất cả file vào sites-available mà không phân nhóm.

  • Đặt nhiều website trong cùng một file.

  • Xóa file cấu hình khi không dùng nữa.

  • Sửa trực tiếp file đang chạy mà không test.


9. Checklist khi thêm website mới

  1. Xác định nhóm (website / webapp / ws).

  2. Chọn đúng template chuẩn.

  3. Đặt file vào đúng thư mục nhóm.

  4. Ghi chú header rõ ràng.

  5. Symlink vào sites-enabled.

  6. nginx -t trước khi reload.


10. Kết luận

Chuẩn hóa cấu trúc cấu hình cho hàng trăm website không phải để “đẹp”, mà để:

  • Hệ thống không hỗn loạn theo thời gian,

  • Người vận hành không sợ sửa cấu hình,

  • Việc mở rộng không làm tăng rủi ro.

Cấu trúc tốt là nền tảng để:

  • Áp dụng template,

  • Thực hiện failover,

  • Bàn giao và audit dễ dàng.

Bài tiếp theo sẽ đi sâu vào “Bài 14. Chuẩn hóa quy trình thêm mới website và web app”, biến cấu trúc này thành một quy trình vận hành nhất quán.