Blog chia sẻ về công nghệ ...
Published on

Tìm hiểu về NGINX và cấu trúc thư mục ứng dụng

Authors

🌐 NGINX là gì?

NGINX là một web server mã nguồn mở rất phổ biến, thường được dùng làm:

  • Web server tĩnh
  • Reverse proxy (chuyển hướng request)
  • Load balancer
  • API gateway

NGINX nổi tiếng vì:

  • Hiệu năng cao
  • Nhẹ, đơn giản
  • Cấu hình linh hoạt

📑 Mục Lục

  1. Vai trò của NGINX trong ứng dụng web
  2. Mô hình triển khai NGINX
  3. Cấu trúc thư mục ứng dụng dùng NGINX
  4. Tệp cấu hình chính
  5. Lưu ý và thực hành

🚀 Vai trò của NGINX trong ứng dụng web

Nhiệm vụMô tả
Web ServerPhục vụ file tĩnh: HTML, CSS, JS
Reverse ProxyChuyển request đến backend: Node.js, PHP, ...
Load BalancerPhân tải request đến nhiều server backend
HTTPS GatewayGiao tiếp SSL/TLS an toàn

📦 Mô hình hệ thống sử dụng NGINX

[Client Browser]
     [NGINX]
     ├── Serve static files (/var/www/html)
     └── Proxy to backend (http://localhost:3000)
           [App Node.js, PHP, Python]

📂 Cấu trúc thư mục ứng dụng sử dụng NGINX

/etc/nginx/                ← Thư mục cấu hình chính
├── nginx.conf             ← File cấu hình toàn cục
├── conf.d/                ← Chứa các file cấu hình nhỏ (khuyên dùng)
│   └── default.conf       ← Virtual host mặc định
├── sites-available/      ← Nơi khai báo các site
├── sites-enabled/        ← Nơi kích hoạt site (symbolic link từ available)
├── mime.types             ← Kiểu MIME hỗ trợ
/var/www/                  ← Mã nguồn website
└── html/                  ← Thư mục gốc chứa HTML (mặc định)

🔎 Một số bản phân phối NGINX không có sites-available/sites-enabled/, bạn có thể tự tạo theo best practice của Ubuntu/Debian.


⚙️ Cấu hình đơn giản (reverse proxy)

Ví dụ: /etc/nginx/conf.d/app.conf

server {
  listen 80;
  server_name example.com;

  location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}
  • Truy cập vào http://example.com sẽ chuyển tiếp đến backend Node.js chạy tại localhost:3000.

🧪 Lưu ý và thực hành

✅ Các lệnh hay dùng

sudo nginx -t              # Kiểm tra cấu hình
sudo systemctl restart nginx
sudo nginx -s reload       # Reload cấu hình không ngắt kết nối

🔒 Quyền và bảo mật

  • Thư mục /var/www/html nên cấp quyền 755 và thuộc user www-data
  • Cẩn thận với quyền ghi để tránh bị upload shell/backdoor

📦 Docker + NGINX

Trong Docker:

  • Mount volume /etc/nginx/conf.d/
  • Static files nằm trong /usr/share/nginx/html

✅ Tổng kết

Thành phầnÝ nghĩa
nginx.confCấu hình chính
conf.d/*.confKhai báo site, proxy, routing
/var/www/htmlChứa mã nguồn web tĩnh
sites-enabled/Danh sách các site được kích hoạt

📚 Tài liệu tham khảo


Nắm vững cấu trúc thư mục NGINX sẽ giúp bạn quản lý, cấu hình và deploy hệ thống dễ dàng, bảo mật hơn và đúng chuẩn sản xuất.