- Published on
Tìm hiểu về NGINX và cấu trúc thư mục ứng dụng
- Authors
- Name
- Bạch Đăng Tuấn
- Occupation
- Kỹ sư công nghệ thông tin
- Zalo: 0934.01.07.04
🌐 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
- Vai trò của NGINX trong ứng dụng web
- Mô hình triển khai NGINX
- Cấu trúc thư mục ứng dụng dùng NGINX
- Tệp cấu hình chính
- Lưu ý và thực hành
🚀 Vai trò của NGINX trong ứng dụng web
Nhiệm vụ | Mô tả |
---|---|
Web Server | Phục vụ file tĩnh: HTML, CSS, JS |
Reverse Proxy | Chuyển request đến backend: Node.js, PHP, ... |
Load Balancer | Phân tải request đến nhiều server backend |
HTTPS Gateway | Giao 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/
và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ạilocalhost: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ền755
và thuộc userwww-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.conf | Cấu hình chính |
conf.d/*.conf | Khai báo site, proxy, routing |
/var/www/html | Chứ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
- https://nginx.org/en/docs/
- https://www.digitalocean.com/community/tutorials/nginx-essential-configurations
- https://www.linode.com/docs/guides/introduction-to-nginx/
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.