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 8. Cài đặt Nginx trên Debian 12 theo chuẩn production

ICT

1. Mục tiêu của bài này

Mục tiêu của bài này không phải chỉ để “chạy được Nginx”, mà là:

  • Cài đặt Nginx theo đúng vai trò Reverse Proxy production.

  • Cấu hình nền tảng gọn, rõ ràng, dễ mở rộng.

  • Tránh các cấu hình mặc định không phù hợp môi trường nhiều website.

  • Chuẩn bị sẵn sàng cho HTTPS, Cloudflare và failover backend.

Sau bài này:

  • Nginx chạy ổn định trên Debian 12.

  • Cấu trúc cấu hình đã được chuẩn hóa.

  • Sẵn sàng cho các bài cấu hình chi tiết tiếp theo.


2. Cài đặt Nginx từ kho chính thức của Debian

2.1. Vì sao dùng Nginx từ repo Debian?

Trong môi trường production:

  • Ưu tiên ổn định hơn phiên bản mới nhất.

  • Kho chính thức của Debian 12:

    • Được vá lỗi bảo mật kịp thời.

    • Đảm bảo tương thích hệ thống.

Không cần cài Nginx từ source hoặc PPA trừ khi có yêu cầu đặc biệt.


2.2. Cài đặt Nginx

apt update
apt install -y nginx

Kiểm tra trạng thái:

systemctl status nginx

Nếu hệ thống hoạt động bình thường, Nginx sẽ:

  • Tự động khởi động.

  • Lắng nghe cổng 80.


3. Kiểm tra hoạt động ban đầu

Truy cập từ trình duyệt:

http://IP_Reverser_Proxy 
Ví dụ
http://192.168.1.88/

 

Nếu thấy trang:

Welcome to nginx!

→ Nginx đã hoạt động.


4. Chuẩn hóa cấu trúc thư mục cấu hình

4.1. Cấu trúc mặc định của Debian

Debian sử dụng cấu trúc chuẩn:

/etc/nginx/
├── nginx.conf
├── sites-available/
├── sites-enabled/
├── conf.d/
 

Nguyên tắc sử dụng trong tài liệu này:

  • nginx.conf: cấu hình global.

  • sites-available/: mỗi website / app một file.

  • sites-enabled/: symlink các site đang hoạt động.

  • Không lạm dụng conf.d cho virtual host.


4.2. Vô hiệu hóa site mặc định

Site mặc định dễ gây:

  • Nhầm lẫn khi cấu hình nhiều domain.

  • Lộ thông tin không cần thiết.

Thực hiện:

rm /etc/nginx/sites-enabled/default

 

Reload:

nginx -t
systemctl reload nginx

5. Chuẩn hóa file nginx.conf cho Reverse Proxy

5.1. Mục tiêu chỉnh sửa nginx.conf

  • Không viết cấu hình site trong nginx.conf.

  • Chỉ để cấu hình global, ảnh hưởng toàn hệ thống.


5.2. Ví dụ cấu trúc nginx.conf chuẩn

Mở file:

vim /etc/nginx/nginx.conf

 

Phần http {} nên có cấu trúc rõ ràng:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
   worker_connections 4096;
   multi_accept on;
}

http {
   include       /etc/nginx/mime.types;
   default_type  application/octet-stream;

   sendfile        on;
   tcp_nopush      on;
   tcp_nodelay     on;
   keepalive_timeout  65;
   types_hash_max_size 2048;

   server_tokens off;

   access_log  /var/log/nginx/access.log;
   error_log   /var/log/nginx/error.log warn;

   include /etc/nginx/conf.d/*.conf;
   include /etc/nginx/sites-enabled/*;
}
 

Giải thích ngắn gọn:

  • worker_processes auto: tận dụng CPU hợp lý.

  • worker_connections: đủ lớn cho proxy.

  • server_tokens off: không lộ phiên bản Nginx.


6. Kiểm tra cấu hình Nginx

Sau mỗi thay đổi:

nginx -t

Nếu OK:

systemctl reload nginx

Nguyên tắc:

  • Không restart nếu không cần thiết.

  • Reload để tránh ngắt kết nối đang hoạt động.


7. Chuẩn hóa logging cho production

Log mặc định đủ dùng ở giai đoạn đầu:

  • access.log

  • error.log

Không nên:

  • Tắt log sớm.

  • Ghi log quá chi tiết khi chưa cần.

Khi hệ thống lớn lên, sẽ:

  • Tối ưu log riêng cho từng site.

  • Phân tích log để xử lý sự cố.


8. Những sai lầm phổ biến cần tránh

  1. Cấu hình tất cả site trong nginx.conf.

  2. Giữ site default.

  3. Restart Nginx liên tục.

  4. Copy–paste cấu hình không hiểu.

  5. Trộn cấu hình proxy, SSL, app trong một file không kiểm soát.

Những lỗi này khiến hệ thống:

  • Khó mở rộng,

  • Khó debug,

  • Dễ gây downtime.


9. Kết luận

Sau bài này:

  • Nginx đã được cài đặt đúng chuẩn production.

  • Cấu trúc cấu hình rõ ràng, dễ quản lý.

  • Hệ thống sẵn sàng cho:

    • Cấu hình Reverse Proxy cho website,

    • HTTPS,

    • Và quản lý hàng trăm domain.